【C言語 入門】breakとcontinueの使い方を完全解説|繰り返し処理を制御する基本構文
生徒
「C言語でループを途中で止めたり、スキップしたりする方法ってありますか?」
先生
「ありますよ。C言語では、breakとcontinueという便利な制御文を使うことで、繰り返し処理の流れを自由に変えられます。」
生徒
「名前は知ってるけど、どんな動きをするのかまだイメージできません…。」
先生
「では、例えを使いながら丁寧に説明していきますね。」
1. breakとは?
まずはbreakです。C言語のbreakは、「繰り返し処理(ループ)をその場で終了する」ための命令です。for文、while文、do-while文、そしてswitch文でも使えます。たとえば、宝探しゲームのように「目標を見つけたら、それ以上探す必要がない」場面を思い浮かべてください。そんなときにbreakを使うと、条件を満たした瞬間にループを抜けられるので、無駄な処理を減らせます。
初心者がつまずきやすいポイントは、「breakを実行すると、その時点でループの中の残りの処理は行われず、次の行(ループの外)へ進む」という点です。つまり、途中で終了したい条件をif文で作り、その中でbreakを呼ぶのが基本の形になります。検索や探索、繰り返しの判定など、C言語のプログラムでよく出てくる考え方です。
int i;
for(i = 0; i < 10; i++)
{
if(i == 5)
{
break;
}
printf("%d\n", i);
}
この例では数字が0から順に表示されますが、iが5になった瞬間にbreakが動き、ループが終了します。つまり表示されるのは0〜4までです。「見つかったら終了する」「合格ラインに達したら終了する」のように、ゴールが決まっている繰り返しで特に使いやすい命令です。
もう少しイメージしやすいように、「見つけたかどうか」を表す旗(フラグ)を使った簡単な例も見てみましょう。見つかったら、そこで探すのをやめる流れです。
int i;
int found = 0;
for(i = 0; i < 10; i++)
{
if(i == 7)
{
found = 1;
break;
}
}
if(found == 1)
{
printf("見つかりました\n");
}
else
{
printf("見つかりませんでした\n");
}
このプログラムでは、iが7になったら「見つかった」としてbreakでループを終了し、その後に結果メッセージを表示します。breakを使うと、必要なところだけ回して、終わったらすぐ抜ける形が作れるため、C言語の繰り返し制御を学ぶうえで欠かせない基本になります。
2. continueとは?
次にcontinueです。continueは、「その回の処理だけを飛ばして、次の繰り返しに進む」ための命令です。breakのようにループ全体を止めるのではなく、あくまで「今回だけスキップする」のがポイントです。たとえば、名簿を順番に確認していて「この人は対象外だから次へ」と進めたい場面や、データの中から条件に合うものだけを処理したい場面でよく使われます。
初心者が覚えておきたいのは、continueが実行されると、その下に書いてある処理は実行されず、すぐに次のループへ移ることです。for文の場合はカウンタが進み、while文の場合は条件判定に戻ります。つまり「やりたくない処理を避ける」ための近道として使える、というイメージを持つと理解しやすくなります。
int i;
for(i = 0; i < 10; i++)
{
if(i == 3)
{
continue;
}
printf("%d\n", i);
}
このプログラムは3をスキップして、他の数字だけを表示します。continueが動いた回はprintfまで進まないので、「3だけ表示しない」が簡単に実現できます。こうした書き方は、不要なデータを除外したいときや、条件に合わない入力を無視したいときにも役立ちます。
もう少し実用っぽい例として、「0は割り算できないので、その回は飛ばす」ケースを見てみましょう。学習中によく出る“安全に処理する”考え方も一緒に身につきます。
#include <stdio.h>
int main(void)
{
int nums[5] = { 10, 0, 5, 0, 2 };
int i;
for(i = 0; i < 5; i++)
{
if(nums[i] == 0)
{
continue;
}
printf("10 / %d = %d\n", nums[i], 10 / nums[i]);
}
return 0;
}
この例では、配列の値が0のときだけcontinueでスキップし、割り算を避けています。continueを使うと、「条件に合わない回は処理しない」という書き方がはっきりするので、繰り返し処理の読みやすさも上がります。
3. breakとcontinueの違いを生活に例えてみる
初心者にとって、breakとcontinueの違いは「何を止めるのか」で整理するとスッと入ってきます。breakは繰り返しそのものを終了し、continueはその回だけをスキップして次の回へ進みます。どちらもループの流れを変える命令ですが、目的がまったく違うので、場面に合わせて使い分けるのがコツです。
breakのイメージ:「宝物を見つけたから帰る(探索を終える)」
continueのイメージ:「落ちているゴミを拾うけど、汚いものは飛ばして次へ進む(作業は続ける)」
つまり、breakは「ここで終わり」、continueは「今回はやらない」という違いです。この感覚がつかめると、C言語のfor文やwhile文の繰り返し処理が読みやすくなり、意図した制御も組みやすくなります。
たとえば、1から10まで数を見ていくときに、「7が出たら終了(break)」と「3は表示しない(continue)」を同時に入れると、違いがはっきりします。
#include <stdio.h>
int main(void)
{
int i;
for(i = 1; i <= 10; i++)
{
if(i == 3)
{
continue; /* 3は飛ばす */
}
if(i == 7)
{
break; /* 7で終了する */
}
printf("%d\n", i);
}
return 0;
}
この例では、3のときは表示せずに次へ進み、7になった時点でループ自体が終わります。実際の開発でも「不要なデータはスキップして、条件を満たしたら早めに終了する」という場面は多いので、2つの違いを理解しておくと繰り返し制御の基本がしっかり身につきます。
4. while文とbreakの組み合わせ
while文とbreakを組み合わせると、「いつ終わるか分からない繰り返し処理」を安全に制御できます。for文は回数が決まっている処理に向いていますが、while文は条件が成立している間ずっと続ける構文です。そのため、途中で状況が変わったときに強制的に終了させたい場合、breakがとても重要になります。
初心者に分かりやすい例が、数字を順番に確認しながら「ある値に達したら終了する」処理です。条件はwhileで管理しつつ、「ここで終わりたい」という判断をif文とbreakで書くのが基本の形になります。
int num = 0;
while(num < 10)
{
if(num == 6)
{
break;
}
printf("数値:%d\n", num);
num++;
}
このプログラムでは、numが6になった瞬間にbreakが実行され、while文を抜けます。結果として0から5までが表示され、それ以降の処理は行われません。「条件はまだtrueだけど、もう続ける意味がない」という場面でbreakが使われている点がポイントです。
実際のプログラムでは、ユーザー入力を待つ処理や、正しい値が見つかるまで繰り返す処理などで、この形がよく使われます。while文とbreakを組み合わせて使えるようになると、C言語の繰り返し処理を柔軟にコントロールできるようになります。
5. continueで必要な処理だけ選ぶ
例えば、偶数だけ表示したい場合など「必要なものだけ選びたい」という場面があります。そのときにcontinueが大活躍します。
int i;
for(i = 1; i <= 10; i++)
{
if(i % 2 == 1)
{
continue;
}
printf("%d\n", i);
}
この例では奇数の時にcontinueが実行され、処理がスキップされます。結果として偶数だけが表示されます。データのフィルタリングや条件付き処理によく使われるパターンです。
6. breakを使うときの注意点
breakを使いすぎると、プログラムの流れが分かりにくくなり、バグの原因になります。特にネスト(入れ子)になっているループでは、「どのループが終了したのか」が分かりにくくなることがあります。初心者のうちは、1つのループの中で使う程度にしておくと理解しやすいです。
7. continueを使うときの注意点
continueは処理をスキップするため便利ですが、スキップしたときに変数が更新されていないと無限ループが起きる可能性があります。while文で特に起こりやすく、注意が必要です。
int n = 0;
while(n < 5)
{
if(n == 2)
{
continue;
}
printf("%d\n", n);
n++;
}
この例はnが2のときスキップされるため、nの値が増えず永遠に止まりません。初心者が最もつまずきやすい部分なので、continueを使うときは変数の更新を忘れないようにしましょう。
8. breakとcontinueの使いどころを整理
・break → ループ自体を止めたいとき
・continue → 特定の処理をスキップしたいとき
どちらもC言語のプログラムを効率化するための大切な構文です。単純な繰り返しだけでなく、検索処理や条件チェックなど、多くの場面で役立ちます。初心者のうちに正しい動きを覚えておくことで、後の学習がとても楽になります。