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

C 語言邏輯運算符短路求值特性:&& 與 || 的副作用差異

     編輯:關於C

核心規則

  • && (邏輯與):左操作數為假(0)時短路,右操作數不求值;
  • || (邏輯或):左操作數為真(非0)時短路,右操作數不求值。

經典副作用案例

int i=0, a=1, b=2, c=3, d=4;

// &&:全部求值
i = a++ && ++b && d++;
// a=1(真) → ++b=3(真) → d++=4(真) → i=1
// 最終:a=2, b=3, c=3, d=5

// ||:首真短路
i = a++ || ++b || d++;
// a=1(真) → 短路,++b 和 d++ 不執行
// 最終:a=2, b=2, c=3, d=4, i=1

工程意義

  1. 性能優化:將代價大/概率高的條件放左邊(&& 放假率高的,|| 放真率高的);
  2. 空指針保護:if (p && p->field) 保證 p 非空後再解引用;
  3. 避免副作用依賴:不要在右操作數放置「必須執行」的副作用(如 i++、關鍵函數調用),邏輯變更極易導致漏執行 Bug。

優先級提醒

&& 優先級高於 ||,混合使用時建議加括號明確意圖。

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