運算符優先級完整表 (高→低)
| 級 | 運算符 | 名稱 | 結合性 |
| 1 | () [] -> . | 函數調用、下標、成員訪問 | 左→右 |
| 2 | ++ -- + - ! ~ * & (type) sizeof | 後置/前置自增減、一元正負、邏輯非、按位取反、解引用、取址、強轉、sizeof | 右→左 |
| 3 | * / % | 乘除模 | 左→右 |
| 4 | + - | 加減 | 左→右 |
| 5 | << >> | 左右移 | 左→右 |
| 6 | < <= > >= | 關系比較 | 左→右 |
| 7 | == != | 相等比較 | 左→右 |
| 8 | & | 按位與 | 左→右 |
| 9 | ^ | 按位異或 | 左→右 |
| 10 | | | 按位或 | 左→右 |
| 11 | && | 邏輯與 | 左→右 |
| 12 | || | 邏輯或 | 左→右 |
| 13 | ?: | 條件運算符 | 右→左 |
| 14 | = += -= *= /= %= <<= >>= &= ^= |= | 賦值及複合賦值 | 右→左 |
| 15 | , | 逗號運算符 | 左→右 |
易錯優先級陷阱
*p++ ≡ *(p++) (後置++ 優先級高於 *)
&a + b ≡ (&a) + b (取址優先級高於 +)
a == b & c ≡ (a == b) & c (== 優先級高於 &)
a & b == c ≡ a & (b == c) (== 優先級高於 &) —— 極易寫錯!
sizeof int * p ≡ (sizeof int) * p (sizeof 優先級高於 *)
優先級口訣(順口溜)
括號成員第一;
單目運算第二;
乘除模三,加減四;
移位五,關系六;
等於不等排第七;
位與異或位或,八九十;
邏輯與十一,邏輯或十二;
條件十三,賦值十四;
逗號十五最低級。
記憶鍵
- 單目 都在二級(除後置++/-- 在一級);
- 算術 > 移位 > 關系 > 相等 > 位運算 > 邏輯運算 > 條件 > 賦值 > 逗號;
- && 高於 ||(邏輯與比邏輯或緊);
- 不確定時加括號,寫給人看,不給編譯器猜。