C語言基礎
int n = 2, c = 0;
switch (n) {
case 1: c += 1;
case 2: c += 10;
case 3: c += 100; break;
default: c += 1000;
}
printf("%d\n", c);執行上方含有沒有 break 之 case 的 switch 敘述時的輸出,下列何者正確?
- A10
- B110
- C1110
查看答案與解析
正確答案:B. 110
switch 敘述會跳到與 n 的值相符的 case 標籤,並從那裡繼續執行下方 case 的敘述,直到遇到 break 為止(貫穿)。n 為2,因此從 case 2 開始執行,在 c += 10 之後也執行 case 3 的 c += 100,再以 break 離開 switch。c 為 10 + 100 = 110。若是刻意讓它繼續執行,在註解中寫明,就容易與忘了寫 break 區分。
- A. case 2 之後沒有 break,因此 case 3 的敘述也會執行。
- B. 正確。連續執行 case 2 與 case 3,再以 break 離開。
- C. 以 case 3 之後的 break 離開,因此不會執行 default 的敘述。