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

C 語言運算子優先順序速記口訣

     編輯:關於C語言

為什麼需要速記法?

C 語言運算子超過 40 種,優先順序層級多達 15 級。初學者常靠死記硬背,寫代碼時仍須查表。資深工程師建議:「不確定時加括號」,但閱讀他人代碼時仍需快速判斷結合順序。一個好的口訣能將優先順序內化為肌肉記憶。

經典口訣(按優先級從高到低)

單目雙目三目問,算術移位關係親。
邏輯位與位異或,邏輯或後條件真。
賦值逗號最輕鬆,括號提升最高榮。

口訣對照表

口訣片段對應運算子類別代表運算子結合方向
單目一元運算子++ -- + - ! ~ (type) * & sizeof右→左
雙目算術運算子* / % + -左→右
三目條件運算子? :右→左
移位位移運算子<< >>左→右
關係關係運算子< <= > >=左→右
邏輯位與位元 AND&左→右
位異或位元 XOR^左→右
位或位元 OR|左→右
邏輯與邏輯 AND&&左→右
邏輯或邏輯 OR||左→右
條件真條件運算子(三目)? :右→左
賦值賦值運算子= += -= *= /= %= &= ^= |= <<= >>=右→左
逗號逗號運算子,左→右
括號提升括號改變優先級( )—

實戰建議

  • 寫代碼時:只要心中有一絲疑慮,立刻加括號。編譯器會優化掉多餘括號,不影響效能。
  • 讀代碼時:唸一遍口訣,快速斷句。例如 a + b > c ? d : e 依口訣為 (a+b) > c ? d : e。
  • 避開陷阱:& 優先級高於 ==,if (x & 1 == 0) 實為 if (x & (1==0)) → 永假,正確寫法 if ((x & 1) == 0)。

延伸記憶法:運算子優先級金字塔

最高
  │  ( )  [ ]  ->  .  ++ -- (後置)
  │  ++ -- + - ! ~ (type) * & sizeof (前置/一元)
  │  * / %
  │  + -
  │  << >>
  │  < <= > >=
  │  == !=
  │  &
  │  ^
  │  |
  │  &&
  │  ||
  │  ? :
  │  = += -= *= /= %= &= ^= |= <<= >>=
  │  ,
最低

將金字塔列印貼在螢幕邊,初學期一個月即可內化。

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