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

C語言運算符優先級:邏輯與 && 高於關係運算符 >

     編輯:C 語言問答

表達式 K++ && n++ > 2 結合性分析

優先級排序(高 → 低)

  1. ++ (後綴)
  2. > (關係運算符)
  3. && (邏輯與)

但注意:**邏輯與 && 優先級高於關係運算符 >** 是錯誤的記憶。正確順序為:

後綴 ++  >  關係運算符 (>, <, >=, <=)  >  邏輯與 (&&)  >  邏輯或 (||)

實際結合過程

表達式:K++ && n++ > 2

  1. K++ 先結合(後綴 ++ 最高) → 左操作數。
  2. n++ > 2 再結合(關係運算符 > 邏輯與) → 右操作數:(n++) > 2。
  3. 最後 && 結合:(K++) && ((n++) > 2)。

短路求值效果

  • 若 K 原值為 0 → K++ 為 0 (假) → **短路**,n++ > 2 **不執行**,n 不自增。
  • 若 K 原值非 0 → K++ 為真 → 繼續求值右側:n++ 取原值比較 >2,然後 n 自增。

驗證代碼

#include <stdio.h>
int main() {
    int K = 0, n = 5;
    int res = K++ && n++ > 2;
    printf("K=%d, n=%d, res=%d\n", K, n, res);  // K=1, n=5, res=0 (短路)
    K = 1; n = 5;
    res = K++ && n++ > 2;
    printf("K=%d, n=%d, res=%d\n", K, n, res);  // K=2, n=6, res=1 (n變6)
    return 0;
}

優先級速查表(常用子集)

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

**口訣**:單目 > 算術 > 移位 > 關係 > 相等 > 位與 > 位異或 > 位或 > 邏輯與 > 邏輯或 > 條件 > 賦值 > 逗號。不確定時**加括號**,可讀性與安全性雙贏。

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