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

C 語言運算子優先序與結合性完整對照表

     編輯:關於C語言

運算子優先序表(優先序 1 最高,15 最低)

優先序結合性運算子說明
1左→右() [] -> .函式呼叫、陣列下標、結構指標/成員存取
2右→左! ~ ++ -- - (type) * & sizeof邏輯非、位元非、遞增減、負號、型別轉換、指標解引用、取址、大小
3左→右* / %乘、除、取餘
4左→右+ -加、減
5左→右<< >>左移、右移
6左→右< <= > >=關係比較
7左→右== !=等於、不等於
8左→右&位元 AND
9左→右^位元 XOR
10左→右|位元 OR
11左→右&&邏輯 AND
12左→右||邏輯 OR
13右→左?:條件運算子(三元)
14右→左= += -= *= /= %= >>= <<= &= ^= |=賦值及複合賦值
15左→右,逗號運算子

關鍵記憶口訣

  • 單目 > 算術 > 移位 > 關係 > 等值 > 位元 > 邏輯 > 條件 > 賦值 > 逗號
  • 位元運算優先序:& > ^ > |(類似乘法 > 加法)
  • 邏輯運算優先序:&& > ||
  • 賦值運算右結合:a = b = c 等價 a = (b = c)
  • sizeof、型別轉換、單目運算同層級,右結合。

常見易錯範例

// 1. 位元 & 低於 ==
if (a & b == 0)  // 實為 a & (b == 0) ❌
if ((a & b) == 0) // 正確 ✅

// 2. 移位優先於關係
if (a << 2 > b)  // 實為 (a << 2) > b ✅ (移位優先序 5 > 關係 6)

// 3. 條件運算子右結合
a ? b : c ? d : e  // 實為 a ? b : (c ? d : e) ✅

// 4. 逗號運算子最低
int x = (1, 2, 3); // x = 3,逗號運算子回傳最右值

建議

複雜表達式務必加括號明確意圖,勿依賴記憶優先序,提升可讀性並避免移植風險(部分編譯器對位元/邏輯優先序實作不同)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved