括號的使用,哪怕在不是必要的場合下,通過括號的配對來明確標明運算順序,而非靠運算符優先級和結合性來決定,通常能夠增加代碼的可讀性。
下表按照優先級從高到低列出了運算符。同一行中的運算符具有相同優先級,此時它們的結合方向決定求值順序。
運算符優先級
結合方向 | 運算符 | 附加信息 |
---|---|---|
無 | clone new | clone 和 new |
左 | [ | array() |
右 | ** | 算術運算符 |
右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 類型和遞增/遞減 |
無 | instanceof | 類型 |
右 | ! | 邏輯運算符 |
左 | * / % | 算術運算符 |
左 | + - . | 算術運算符和字符串運算符 |
左 | << >> | 位運算符 |
無 | < <= > >= | 比較運算符 |
無 | == != === !== <> <=> | 比較運算符 |
左 | & | 位運算符和引用 |
左 | ^ | 位運算符 |
左 | | | 位運算符 |
左 | && | 邏輯運算符 |
左 | || | 邏輯運算符 |
左 | ?? | 比較運算符 |
左 | ? : | ternary |
right | = += -= *= **= /= .= %= &= |= ^= <<= >>= | 賦值運算符 |
左 | and | 邏輯運算符 |
左 | xor | 邏輯運算符 |
左 | or | 邏輯運算符 |