運算符優先級

運算符優先級指定了兩個表達式綁定得有多“緊密”。例如,表達式 1 + 5 * 3 的結果是 16 而不是 18 是因爲乘號(“*”)的優先級比加號(“+”)高。必要時可以用括號來強制改變優先級。例如:(1 + 5) * 3 的值爲 18

如果運算符優先級相同,那運算符的結合方向決定了該如何運算。例如,"-"是左聯的,那麼 1 - 2 - 3 就等同於 (1 - 2) - 3 並且結果是 -4. 另外一方面,"="是右聯的,所以 $a = $b = $c 等同於 $a = ($b = $c)

沒有結合的相同優先級的運算符不能連在一起使用,例如 1 < 2 > 1 在PHP是不合法的。但另外一方面表達式 1 <= 1 == 1 是合法的, 因爲 == 的優先級低於 <=

括號的使用,哪怕在不是必要的場合下,通過括號的配對來明確標明運算順序,而非靠運算符優先級和結合性來決定,通常能夠增加代碼的可讀性。

下表按照優先級從高到低列出了運算符。同一行中的運算符具有相同優先級,此時它們的結合方向決定求值順序。

運算符優先級
結合方向 運算符 附加信息
clone new clone 和 new
** 算術運算符
++ -- ~ (int) (float) (string) (array) (object) (bool) @ 類型遞增/遞減錯誤控制
instanceof 類型
! 邏輯運算符
* / % 算術運算符
+ - . 算術運算符 和 字符串運算符
<< >> 位運算符
< <= > >= 比較運算符
== != === !== <> <=> 比較運算符
& 位運算符 和 引用
^ 位運算符
| 位運算符
&& 邏輯運算符
|| 邏輯運算符
?? null 合併運算符
? : 三元運算符
= += -= *= **= /= .= %= &= |= ^= <<= >>= 賦值運算符
yield from yield from
yield yield
and 邏輯運算符
xor 邏輯運算符
or 邏輯運算符
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章