基本介紹
- 中文名:非結合算符
- 外文名:Non-binding operator
- 學科:計算機
- 定義:既不是左結合又不是右結合的算符
- 有關術語:左結合、右結合
- 領域:程式語言
簡介,結合性,概述,左結合性和右結合性,PHP,
簡介
非結合算符是指既不是左結合又不是右結合的算符。大多數語言並沒有分非結合算符這一類,只分左結合、右結合,如C語言。但是有些語言吧非結合也算一種,如PHP。主要原因:當有一個對象兩側運算符的優先權別相同時,左結合和右結合不改變對象運算結果、例如運算符<<= > >=在PHP中。非結合的相同優先權的運算符不能連在一起使用,例如 1 < 2 > 1 在PHP是不合法的。但另外一方面表達式 1 <= 1 == 1 是合法的,因為 == 的優先權低於 <=。
結合性
概述
結合性是指當一個運算對象兩側運算符的優先權別相同時,運算對象與運算符的結合順序。
關於結合性的概念在其他高級語言中是沒有的,這是 C 語言的特點之一。在標準 C 語言的文檔里, 對操作符的結合性並沒有做出非常清楚的解釋。一個滿分的回答是:它是仲裁者,在幾個操作符具有相同的優先權時決定先執行哪一個。C 語言也將 34 種運算符規定了不同的結合性。大多數運算符結合方向是“自左至右”,即:先左後右,也叫 “左結合性” , 例如a -b + c,表達式中有-和+兩種運算符, 且優先權相同,按先左後右結合方向, 先圍繞減號結合,執行a-b 的運算,再圍繞加號結合,完成運算(a -b) + c。除了左結合性外,C 語言有三類運算符的結合方向是從右至左, 也叫 “右結合性” ,即:單目運算符、 條件運算符、以及賦值運算符。著重強調一點, 無論是左結合性, 還是右結合性, 是針對兩個相鄰的優先權相同的運行符而言(不是表達中的運算對象), 運算符是決定左右的基準點,先以前面的運算符(即位置上處於左邊的運算符)構造運算, 就是左結合, 反之, 就是右結合。
左結合性和右結合性
C規定了各種運算符的結合方向,分為兩種:左結合性和右結合性
例如:算術運算符的結合性是自左至右,即先左後右。
如有表達式x-y+z則y應先與“-”號結合,執行x-y運算,然後再執行+z的運算。這種自左至右的結合方向就稱為“左結合性”。
而自右至左的結合方向稱為“右結合性”。 最典型的右結合性運算符是賦值運算符。如x=y=z,由於“=”的右結合性,應先執行y=z再執行x=(y=z)運算。
C語言運算符中有不少為右結合性,應注意區別,以避免理解錯誤。(上文的優先權有分辨左右結合性)。
PHP
php 是一種伺服器端的,嵌入html的腳本語言。php區別其他像客戶端java的地方是它的代碼在伺服器端執行.php可以做任何其他cgi程式所能做的事,例如收集表格數據,生成動態頁面內容,或者收發cookies。可能最強大,最有意義的特性是php支持大範圍的資料庫.書寫一個支持資料庫的web 頁面是難以置信的簡單。
PHP 中的運算符分為:四則運算符、邏輯運算符、三目運算符和位運算符。
運算符優先權指定了兩個表達式綁定得有多“緊密”。例如,表達式 1 + 5 * 3 的結果是 16 而不是 18 是因為乘號(“*”)的優先權比加號(“+”)高。必要時可以用括弧來強制改變優先權。例如:(1 + 5) * 3 的值為 18。
如果運算符優先權相同,那運算符的結合方向決定了該如何運算。例如,"-"是左聯的,那么 1 - 2 - 3 就等同於 (1 - 2) - 3 並且結果是 -4. 另外一方面,"="是右聯的,所以 $a = $b = $c 等同於 $a = ($b = $c)。
括弧的使用,哪怕在不是必要的場合下,通過括弧的配對來明確標明運算順序,而非靠運算符優先權和結合性來決定,通常能夠增加代碼的可讀性。
下表按照優先權從高到低列出了運算符。同一行中的運算符具有相同優先權,此時它們的結合方向決定求值順序。
結合方向 | 運算符 | 附加信息 |
---|---|---|
非結合 | new | new |
左 | [ | array() |
非結合 | ++ -- | 遞增/遞減運算符 |
非結合 | ! @ | 類型 |
左 | * / % | 算數運算符 |
左 | + - . | 算數運算符和字元串運算符 |
左 | << >> | 位運算符 |
非結合 | < <= > >= | 比較運算符 |
非結合 | == != === !== | 比較運算符 |
左 | & | 位運算符和引用 |
左 | ^ | 位運算符 |
左 | | | 位運算符 |
左 | && | 邏輯運算符 |
左 | || | 邏輯運算符 |
左 | ? : | 三元運算符 |
右 | <<= >>= | 賦值運算符 |
左 | and | 邏輯運算符 |
左 | xor | 邏輯運算符 |
左 | or | 邏輯運算符 |
左 | , | 多處用到 |