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

C語言運算符完整分類與優先級速查表

     編輯:關於C語言

C語言運算符完整分類與優先級速查表

運算符是表達式的構建塊。本文按功能分類匯總所有 C 運算符,附帶優先級與結合性表,方便編寫複雜表達式時快速查閱。

按功能分類

1. 算術運算符

符號名稱示例
+加a + b
-減a - b
*乘a * b
/除a / b
%取模a % b
++前/後置遞增++a / a++
--前/後置遞減--a / a--

2. 關係運算符

符號含義
==相等
!=不等
>大於
<小於
>=大於等於
<=小於等於

3. 邏輯運算符

符號名稱短路求值
&&邏輯與左側為假則不算右側
||邏輯或左側為真則不算右側
!邏輯非單目

4. 位運算符

符號名稱示例
&按位與a & b
|按位或a | b
^按位異或a ^ b
~按位取反~a
<<左移a << 2
>>右移a >> 2

5. 賦值運算符

符號等價展開
=a = b
+=a = a + b
-=a = a - b
*=a = a * b
/=a = a / b
%=a = a % b
<<=a = a << b
>>=a = a >> b
&=a = a & b
^=a = a ^ b
|=a = a | b

6. 其他運算符

符號名稱/功能
?:條件運算符 (三目)
,逗號運算符 (順序求值,取最後值)
&取地址
*解引用
sizeof類型/表達式大小 (編譯期)
(type)強制類型轉換
[]數組下標
.結構體成員訪問 (實體)
->結構體成員訪問 (指針)

優先級與結合性表 (高 → 低)

優先級運算符結合性
1() [] -> . sizeof (type) ++ -- (後置)左→右
2++ -- + - ! ~ * & (type) sizeof (前置/單目)右→左
3* / %左→右
4+ -左→右
5<< >>左→右
6< > <= >=左→右
7== !=左→右
8&左→右
9^左→右
10|左→右
11&&左→右
12||左→右
13?:右→左
14= += -= *= /= %= <<= >>= &= ^= |=右→左
15,左→右

常見優先級陷阱

// 1. sizeof 不是函數
sizeof int x;      // 錯誤
sizeof(int) * x;   // 正確

// 2. 條件運算符結合性
a ? b : c ? d : e  // 等價 a ? b : (c ? d : e)

// 3. 位運算優先級低於關係
if (a & b == c)    // 等價 a & (b == c) ❌
if ((a & b) == c)  // 正確 ✅

// 4. 賦值表達式有值
while ((c = getchar()) != EOF)  // 正確利用賦值表達式的值

最佳實踐

  1. 複雜表達式加括號:寧可多打幾個括號,也不依賴記憶優先級;
  2. 避免副作用疊加:a[i++] = i++ 行為未定義;
  3. 短路求值善用:if (p && p->next) 先判空再解引用;
  4. sizeof 操作數不求值:sizeof(i++) 不會改變 i。

將此表收藏,編寫、審查、調試表達式時隨時對照,能消除 90% 的運算符相關 Bug。

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