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

程式語法分析核心:運算符優先級與結合律深度解析

     編輯:關於C語言

優先級與結合律速查表(節選)

優先級數字越小優先級越高;同優先級才看結合律(左結合或右結合)。

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

五大經典案例

1. C++ 流輸出左結合

cout << "Hello" << "World";
// 解析: ((cout << "Hello") << "World")
// 第二個 << 左側整體為表達式值(cout),右側只取最近操作數。

2. 算術運算左結合

a + b + c  // ((a + b) + c)

3. 函數指針轉型與調用(右結合)

(* ( (void (*)())0 ) )()
// 解析: (void (*)())0 先結合 → 強制轉型為函數指針
//      * (...) 解引用 → 函數指針
//      (...)() 調用 → 軟件復位

4. 鏈表多級訪問左結合

ph->pNext->pNext->pNext
// 依次結合: ((ph->pNext)->pNext)->pNext
// 每步返回下一節點指針,最終得第 4 節點的 pNext。

5. 逗號表達式陷阱

a = 3*5 , a*4
// 優先級: = > ,  所以先執行 a=15,再算 a*4=60
// 整個表達式值為 60(逗號表達式取最後一項)。

總結

  • 優先級決定「誰先跟誰結合」。
  • 結合律決定「同級運算符左右怎麼組」。
  • 寫複雜表達式時,多加括號消除歧義,提高可讀性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved