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 のラベルに飛び、そこから break に出会うまで、下の case の文も続けて実行します(フォールスルー)。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 の文は実行されません。