首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言運算符優先級與結合性完整表(含說明)

     編輯:關於C語言

運算符優先級表(高 → 低)

級運算符名稱/含義形式結合性說明
1[]數組下標arr[expr]左→右
()函數調用/分組func(args) / (expr)左→右
.成員訪問(對象)obj.member左→右
->成員訪問(指針)ptr->member左→右
++後置自增var++左→右單目
--後置自減var--左→右單目
()類型轉換(type)expr右→左單目
2++前置自增++var右→左單目
--前置自減--var右→左單目
*間接訪問*ptr右→左單目
&取地址&var右→左單目
+正號+expr右→左單目
-負號-expr右→左單目
!邏輯非!expr右→左單目
~按位取反~expr右→左單目
sizeof大小sizeof(expr)右→左單目
3*乘法a * b左→右雙目
/除法a / b左→右雙目
%取模a % b左→右雙目
4+加法a + b左→右雙目
-減法a - b左→右雙目
5<<左移a << b左→右雙目
>>右移a >> b左→右雙目
6<小於a < b左→右雙目
<=小於等於a <= b左→右雙目
>大於a > b左→右雙目
>=大於等於a >= b左→右雙目
7==等於a == b左→右雙目
!=不等於a != b左→右雙目
8&按位與a & b左→右雙目
9^按位異或a ^ b左→右雙目
10|按位或a | b左→右雙目
11&&邏輯與a && b左→右短路
12||邏輯或a || b左→右短路
13?:條件運算符a ? b : c右→左三目
14=賦值a = b右→左
+= -= *= /= %=複合賦值a += b右→左
<<= >>= &= ^= |=位運算賦值a &= b右→左
15,逗號運算符a, b, c左→右順序求值

常見優先級陷阱速記

  1. 後置 ++/-- 高於前置:a = b++ 先賦值再增;a = ++b 先增再賦值。
  2. 單目運算符右結合:*p++ 等價 *(p++);++*p 等價 ++(*p)。
  3. 位運算優先級低於關係運算:a & b == c 實為 a & (b == c),通常需加括號 (a & b) == c。
  4. 邏輯與高於邏輯或:a || b && c 等價 a || (b && c)。
  5. 條件運算符右結合:a ? b : c ? d : e 等價 a ? b : (c ? d : e)。
  6. 賦值最低(逗號除外):a = b = c 等價 a = (b = c)。

最佳實踐

  • 不確定時加括號,犧牲簡潔換取可讀與正確。
  • 啟用編譯器警告 -Wparentheses 捕獲可疑優先級。
  • 複雜表達式拆分為多行中間變量,便於調試與維護。

口訣

單目 乘除加減 移位 關係 相等 位與 位異或 位或 邏輯與 邏輯或 三目 賦值 逗號
  1      2      3     4      5     6      7      8     9       10     11    12    13
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved