C言語学習ポータル(無料版) 学習コンテンツ つまずきとエラー switch の break 忘れ

🔀 制御構造

switch の break 忘れ

どんなときに起きるか

一致した case 以降の処理が全部実行されます。gcc: warning: this statement may fall through [-Wimplicit-fallthrough=](-Wextra で有効)。

なぜそうなるのか

case は「入口のラベル」であって区切りではありません。break がなければ、そのまま次の case の中身へ流れ落ちます(フォールスルー)。

直し方・再発防止

各 case の最後に break を書きます。意図的に流したいときは、C23の [[fallthrough]]; を置いて意図であることを示します。-Wextra(または -Wimplicit-fallthrough)を有効にし、警告を残さないのが再発防止です。

止まらない自販機(4コマ漫画)
4コマで見る「止まらない自販機」

アプリでしっかり学ぶ(無料・登録不要) つまずき一覧へ

同じ場面で起きやすいつまずき

= と == を間違えるif (x = 5) と書いてもエラーにならず、条件がいつも成立してしまいます。gccは warning: su… do-while の最後のセミコロンerror: expected ';' before '}' token(clang: error: expec… 無限ループから抜けられない実行すると出力が止まらない、または画面が固まって戻ってきません。Ctrl+C で強制終了するしかない状態になりま…

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る

📚 姉妹教材:手を動かして覚える Linux 教材 — Linuxとインフラの仕組みを地図で学ぶ

Web版 / BOOTH