Q1int s=78; 走 A/B/C/F 的 else if 鏈,印出?預測輸出
C。從上到下,`78>=90` 假、`78>=80` 假、`78>=70` 真→印 C,後面全跳過。
Q2n=1,case 1 沒 break、case 2 有 break,印出?預測輸出
one 和 two。case 1 沒 break → 貫穿 case 2 印 two,遇 break 停。
Q3else if 鏈把 s >= 60 放最前面,95 分會印哪一級?概念
D。第一個成立就停,95 先滿足 `>=60` 印 D,後面 `>=90` 永遠到不了。所以**嚴格條件要放上面**。
Q4int x=5; if (x = 0) printf("A"); else printf("B"); 結果?抓 bug
印 B,x 變 0。`x = 0` 是指派、回傳 0=假 → else;要比較用 `==`。
Q5沒大括號:if (x>0) printf("a\n"); printf("b\n");,當 x = -1 印什麼?概念
只印 b。沒大括號時 if 只管下一個敘述(印 a);印 b 那行永遠執行。goto fail 教訓,永遠加 {}。
Q6巢狀 if 的 else 沒大括號時,配對哪個 if?
最近的 if。dangling else 規則:else 配對最近的 if。加 {} 消歧義。
Q7if (-1) printf("yes"); 會執行嗎?概念
會。C 中任何非零都是真,只有 0 是假。`-1` 非零=真。
Q8a=7,b=12,c=5; max=a; if(b>max)max=b; if(c>max)max=c; 後 max?預測輸出
12。max=7 → 12>7 → max=12 → 5>12 假 → max=12。兩個獨立 if 都檢查。
Q9三個獨立 if(>0 印「正」、>10 印「大」、>100 印「超大」),x=50 印什麼?
「正」「大」。獨立 if 每個都檢查:50>0 真、50>10 真、50>100 假。(若用 else if 只會印一個)
Q10switch 的某個 case 忘了寫 break,會怎樣?
貫穿。沒 break 會繼續執行下一個 case 的程式碼,直到遇到 break 或 switch 結束。