代碼中出現 A && (B && C),疑惑括號內 && 的含義與必要性。
括號將多個條件組合為一個複合條件 D,外層再與 A 進行邏輯與運算。
// 原表達式
A && (B && C)
// 等價邏輯
D = (B && C) // 先計算括號內:B 和 C 同時為真 → D 為真
Result = A && D // 再與 A 邏輯與
int age = 20, hasTicket = 1, isVip = 0;
// 允許入場:成年 且 (有票 或 VIP)
if (age >= 18 && (hasTicket || isVip)) { ... }
// 執行順序:
// 1. (hasTicket || isVip) → 1 || 0 → 1 (true)
// 2. age >= 18 → 1 (true)
// 3. 1 && 1 → 1,允許入場
&& 優先級高於 ||,無括號時 age >= 18 && hasTicket || isVip 會被解析為 (age >= 18 && hasTicket) || isVip,邏輯完全不同。age < 18,括號內 (hasTicket || isVip) **不會被求值**,效率與邏輯均正確。C 語言中 &&() 只是 && 後接**括號分組表達式**,括號內可包含任意邏輯組合(&&、||、比較運算等),作用是**強制優先計算括號內整體真值**,再參與外層邏輯與運算。養成「複雜條件必加括號」習慣,消除歧義、防止 Bug。