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

為何不精通 C?(02) 符號重載與運算符優先級完全圖解

     編輯:關於C語言

為何不精通 C?(02) 符號重載與運算符優先級完全圖解

C 語言大量符號具有**上下文相關的多重含義** (符號重載),且運算符優先級繁多,是面試高頻考點,亦是「精通」分水嶺。

一、C 語言符號重載總表

符號含義 1含義 2含義 3
*聲明指針 int *p解引用 *p乘法 a * b
&取地址 &a按位與 a & b引用聲明 (C++)
-減法 a - b負號 -a指針相減
+加法 a + b正號 +a指針加整數
<小於 a < b左移 a << b模板開頭 (C++)
>大於 a > b右移 a >> b模板結尾 (C++)
( )函數調用 f()類型轉換 (int)a分組/優先級
[ ]數組下標 a[i]屬性修飾 (C++)
{ }代碼塊初始化列表
,參數分隔逗號運算符變量定義分隔
:標簽 label:三元運算符 ?:位域寬度 int a:4
;語句結束
#預處理指令字符串化 #x連接符 ##
.結構體成員 s.m
->指針訪問成員 p->m

來源:《C專家編程》第三章總結。理解上下文語境是關鍵。

二、運算符優先級與結合性速記

最佳實踐:寫代碼時**多加括號**;讀代碼時**查表**。但精通者需內化核心順序:

  1. 初等運算:() [] -> . (最高,左結合)
  2. 單目運算:++ -- ! ~ +(正) -(負) *& sizeof (右結合)
  3. 算術:* / % → + - (左結合)
  4. 移位:<< >> (左結合)
  5. 關系:< <= > >= → == != (左結合)
  6. 位運算:& → ^ → | (左結合)
  7. 邏輯:&& → || (左結合,! 屬單目)
  8. 條件:? : (右結合)
  9. 賦值:= += -= *= /= %= &= ^= |= <<= >>= (右結合)
  10. 逗號:, (最低,左結合)

三、結合性統一規律

  • 所有賦值運算符 (含復合賦值) 均為右結合。判斷標準:真實調用時「操作對象」是否發生改變 (如 a=b 改變 a,*p 改變指向內容,++i 改變 i,cond?x:y 結果不確定)。
  • 其餘所有運算符均為左結合。

例外極少,掌握此二規則可覆蓋 99% 場景。

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