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

C# 布林運算子完整指南:邏輯、關係、短路求值與優先序

     編輯:關於C語言

前言

布林運算子是控制流程、條件判斷的核心。C# 提供豐富的運算子:邏輯非(!)、關係(<, >, ==, !=)、條件邏輯(&&, ||),並具備短路求值特性。本文系統整理語法、行為與優先序。

運算子分類與真值表

1. 邏輯非 !

bool ready = true;
bool notReady = !ready; // false

2. 關係運算子

運算子意義範例 (age=42)結果
<小於age < 21false
<=小於等於age <= 18false
>大於age > 16true
>=大於等於age >= 30true

3. 相等運算子

運算子意義範例結果
==等於age == 100false
!=不等於age != 0true

4. 條件邏輯運算子(短路)

運算子名稱規則
&&條件 AND左側 false 則不評估右側
||條件 OR左側 true 則不評估右側
bool valid = (percent >= 0) && (percent <= 100); // 短路:若 percent < 0,右側不執行
bool invalid = (percent < 0) || (percent > 100); // 短路:若 percent < 0,右側不執行

短路求值的實務價值

  1. 效能:避免不必要的複雜運算或方法呼叫。
  2. 安全:防止 NullReferenceException。if (obj != null && obj.Method())。
  3. 副作用控制:右側有副作用(如寫入 Log、修改狀態)時,短路行為可能影響邏輯,需謹慎設計。

運算子優先序(高到低)

  1. 主要:(), x.y, f(), a[i], ++, -- (後置)
  2. 一元:+, -, !, ~, ++, -- (前置)
  3. 乘法:*, /, %
  4. 加法:+, -
  5. 關係:<, >, <=, >=, is, as
  6. 相等:==, !=
  7. 條件 AND:&&
  8. 條件 OR:||
  9. Null 聯合:??
  10. 條件:?:
  11. 指派:=, +=, -=...

建議:複雜條件加上括號明確優先序,如 (a > 0) && (b < 10)。

常見錯誤

  • if (x = 5) ❌ 指派而非比較,C# 編譯器會報錯(bool 無法隱含轉換)。
  • percent >= 0 && <= 100 ❌ 右側缺少運算元,應寫 percent >= 0 && percent <= 100。
  • 混淆 &、|(邏輯 AND/OR,不短路)與 &&, ||。位元運算子用於整數位元操作或需完整評估兩側的布林邏輯。

結語

熟練掌握布林運算子、短路求值與優先序,是撰寫正確、高效條件判斷的基礎。善用短路特性可提升效能與安全性,但也要注意副作用邊界。建議在 Code Review 時檢查複雜條件是否加括號、是否正確使用短路邏輯。

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