C. 運算子優先順序速查表
優先順序從高到低排列。同優先順序的運算子按結合律(從左至右或從右至左)評估。
| 優先級 | 運算子 | 說明 | 結合律 | 範例 |
|---|---|---|---|---|
| 1 | () |
括號(最高優先) | 從左至右 | (a + b) * c |
| 2 | ++ (後置)、-- (後置) |
後置自增/自減 | 從左至右 | i++ |
| 3 | ++ (前置)、-- (前置) |
前置自增/自減 | 從右至左 | ++i |
| 3 | !、- (單元) |
邏輯非、負號 | 從右至左 | !flag、-x |
| 4 | *、/、% |
乘、除、模 | 從左至右 | a * b / c % d |
| 5 | +、- |
加、減 | 從左至右 | a + b - c |
| 6 | <、<=、>、>= |
比較運算子 | 從左至右 | a < b < c (注意:連寫有陷阱) |
| 7 | ==、!= |
相等、不相等 | 從左至右 | a == b |
| 8 | && |
邏輯且 | 從左至右 | a && b && c |
| 9 | || |
邏輯或 | 從左至右 | a || b || c |
| 10 | =、+=、-=、*=、/=、%= |
指派運算子 | 從右至左 | a = b = c |
常見的優先級陷阱:
&&優先於\|\|- ✗
a \|\| b && c被解讀為a \|\| (b && c) - ✓ 要表達
(a \|\| b) && c需加括號
- ✗
比較運算子不能連寫
- ✗
if (a < b < c)等於if ((a < b) < c)=if (1 < c)或if (0 < c)(取決於a < b) - ✓
if (a < b && b < c)
- ✗
位移運算子優先於算術運算子
- ✗
1 << n + 1被解讀為1 << (n + 1) - ✓
(1 << n) + 1
- ✗
+和-同優先級,從左至右結合a - b + c=(a - b) + ca + b - c=(a + b) - c