今日は92ページのbreak文とcontinue文とから始めたいと思います。
92ページ・break文とcontinue文
今日はbreak文・coutinue文からです
それぞれの役割を簡潔にまとめました。
break文:ループを「脱出」する
break が実行されると、現在実行中のループ(for, while, do-while)をその場で強制終了し、ループの次の処理へ移ります。
- 使いどころ: 特定の条件を満たしたとき、それ以上ループを回す必要がない場合(例:検索で見つかった時、エラーが起きた時など)。
- 注意点: 多重ループ(ループの中にループ)の場合、一番内側のループだけを抜けます。
continue文:処理を「スキップ」して次へ
continue が実行されると、ループ内の残りの処理をスキップし、次の回のループ(条件判定や更新式)へ直行します。
- 使いどころ: 特定の条件の時だけ処理を飛ばしたい場合(例:奇数だけ飛ばして偶数だけ計算したい時など)。
イメージを掴むための比較コード
#include <stdio.h>
int main() {
int i;
// --- breakの例:3になったらループを抜ける ---
printf("breakの場合: ");
i = 1;
while (i <= 5) {
if (i == 3) {
break; // ここでループが強制終了
}
printf("%d ", i);
i++;
}
// 結果:1 2 (3で終わる)
printf("\n");
// --- continueの例:3の時だけ処理を飛ばす ---
printf("continueの場合: ");
i = 0; // 1から始めたいので0からスタート
while (i < 5) {
i++; // カウントアップを先に書くのがコツです
if (i == 3) {
continue; // ここで「printf」を飛ばして、whileの判定に戻る
}
printf("%d ", i);
}
// 結果:1 2 4 5 (3だけ表示されない)
return 0;
}わかりやすく解説
- break
iが 3 になった瞬間にwhileの外に放り出されます。なので、その後のprintfも実行されず、ループ自体が終了します。 - continue
iが 3 のとき、continueが実行されると、それより下にあるprintfを無視して、すぐに「次は 4 かな?」とwhileの条件チェックに戻ります。
注意ポイント:while 文で continue を使うときは、i++(カウントアップ)の場所に気をつけてください。continue の後に i++ を書くと、3のまま止まってしまい、無限ループになってしまうことがあります。
breakはループから出ちゃうけど、continueはループは出ず、continue以降の処理を全部飛ばしてループの最初に行くってこと?
もう少し厳密に言うと、continue が飛ばして戻る先は「ループの最初(条件式の判定)」です。
while文での注意点(ここがハマりやすい!)
先ほどのコードで i++(カウントアップ)の位置を気にしていたのは、こういう理由です。
i = 1;
while (i <= 5) {
if (i == 3) {
continue; // ここで先頭に戻ると...
}
printf("%d ", i);
i++; // ← ここを通らないので、iはずっと3のまま(無限ループ!)
}このように、whileでcontinueを使うときは、「次の回に進むための準備(i++など)」まで飛ばしてしまわないかだけ気をつければOKです。
わかりました!次はいよいよfor文です
