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

C 語言運算符全攻略:優先級、陷阱與最佳實踐

     編輯:關於C語言

分類總覽

類別運算符目數
賦值= += -= *= /= %=二元
算術+ - * / % ++ --一元/二元
邏輯&& || !二元/一元
關係> < >= <= == !=二元
位運算& | ^ ~ << >>二元/一元

重點解析

賦值運算符 = ≠ 數學等於

  • 右結合:a = b = 0 等價 a = (b = 0)
  • 左值必須是可修改實體(變量),不可為表達式:(a=b)=0 ❌

整數除法截斷

7 / 4   → 1      // 非 1.75
7.0 / 4 → 1.75   // 任一操作數為浮點即浮點除法
(int)(7.0/4) → 1 // 強制轉型取整數部

取模 % 僅適用整數

7 % 4 → 3

邏輯運算短路求值

  • &&:左側假則右側不算
  • ||:左側真則右側不算
  • 例:a=2, b=1; a || b-1; → b-1 不執行

== vs = 經典坑

if (Amount = 123)  // 永真!賦值後值為 123
if (Amount == 123) // 正確比較

自增自減前後綴差異

a = ++n;  // n 先增,a 取新值
b = n++;  // b 取舊值,n 後增

// 避免混用
c = n++ + ++n;  // 未定義行為,編譯器相關

複合賦值運算符

Total += 3;  // 等價 Total = Total + 3,更簡潔高效

優先級速查(高→低)

  1. () [] -> .
  2. ++ -- + - ! ~ (type) * & sizeof(一元)
  3. * / %
  4. + -
  5. << >>
  6. < <= > >=
  7. == !=
  8. &
  9. ^
  10. |
  11. &&
  12. ||
  13. ?:
  14. = += -= *= /= %=(右結合)
  15. ,

建議:複雜表達式加括號,寫給人看,不寫給編譯器看。

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