執行下列 C 程式後,產生的輸出為何? #include <stdio.h> int main() { int a = -1, b = -2; if ( a < 0 && b < 0 ) { a++; b++; } else if (a < 0 || b > 2) { a++; b--; } else { a--; b--; } printf("a=%d; b=%d\n", a, b); return 0; }
Aa = 1; b = -2
Ba = 0; b = -1正確答案
Ca = -2; b = -3
Da = -1; b = -4
答案與詳解
B
正確答案
a=-1、b=-2 均<0,進入第一個 if,a++、b++ 後為 a=0、b=-1。
逐選項解析
Aa = 1; b = -2✕ 錯誤
a=1 表示 a++ 執行兩次,但 if/else if/else 只會擇一執行,不可能累加兩次。
Ba = 0; b = -1✓ 正確
Ca = -2; b = -3✕ 易錯陷阱
誤以為進入 else(a--、b--)才會得此結果,但第一個 if 條件已成立,根本不會走到 else。