重點 短路求值:i>0 為假,&& 不再評估 ++j,j 維持 -2,執行 else 得 k=-j=2。
看到 && 先判左式,左為 false 直接短路,右邊 ++j 不執行!
逐選項分析
A✕
k=0 需 j=0,但 j 從未被遞增(短路),j 仍為 -2,不可能為 0。
B✕ 陷阱
陷阱選項!若誤以為 ++j 有執行,j 變 -1,-j=1。但 && 短路使 ++j 根本沒跑。
C✓ 正確
i=-1 不大於 0,&& 左式為 false 立即短路,++j 不執行,j 維持 -2。進入 else:k=-j=-(-2)=2。
D✕ 陷阱
k=3 是初始值,陷阱是誤以為 if/else 都沒執行。但 else 一定會執行,k 必被覆寫。
短路求值 (Short-circuit Evaluation) 規則
| 運算子 | 左式結果 | 右式是否評估 | 整體結果 |
|---|
| && | false | ❌ 不評估 | false |
| && | true | ✅ 評估 | 視右式 |
| || | true | ❌ 不評估 | true |
| || | false | ✅ 評估 | 視左式 |
最常見錯誤是沒注意到 && 的短路特性,誤以為 ++j 一定會執行而把 j 算成 -1。記住:&& 左邊為假時,右邊完全不碰,連副作用(++、--、函式呼叫)都不會發生。