C言語学習ポータル(無料版) 学習コンテンツ つまずきとエラー 無限ループから抜けられない

🔀 制御構造

無限ループから抜けられない

どんなときに起きるか

実行すると出力が止まらない、または画面が固まって戻ってきません。Ctrl+C で強制終了するしかない状態になります。

なぜそうなるのか

更新式の向きが逆(i < 10 なのに i--)、更新自体の書き忘れ、while (x != 5) で x が5を飛び越す、scanf の戻り値を見ないため入力が尽きたあとも空回りする、などが典型です。

直し方・再発防止

ループを書いたら「何が」「どこまで」変わるのかを口に出して確認し、1周目と最終周をトレース表で追います。終了条件は != より < を選びます。入力ループは while (scanf("%d", &n) == 1) のように、戻り値で終わりを判定します。

10回のつもりが(4コマ漫画)
4コマで見る「10回のつもりが」

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

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

= と == を間違えるif (x = 5) と書いてもエラーにならず、条件がいつも成立してしまいます。gccは warning: su… do-while の最後のセミコロンerror: expected ';' before '}' token(clang: error: expec… switch の break 忘れ一致した case 以降の処理が全部実行されます。gcc: warning: this statement ma…

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

完全版(BOOTH)を見る

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

Web版 / BOOTH