繰り返しの処理では、「途中で止めたい」または「一部の処理をスキップしたい」場合があります。
C言語では、これを実現するために break 文と continue 文の2種類が用意されています。
今回は、これらの使い方を説明していきます。
break文
break 文は、繰り返し文(for、while、do while)や switch 文の処理を途中で終了して抜けるための文です。
例えば、for 文の中で条件を満たしたときに break 文を実行すると、その for 文の繰り返しを終了して、次の処理に進みます。
switch文でのbreakは、「条件文(switch文)」で解説しているので、なんとなくわかっているかもしれませんね。
構文は次の通りです。
break;switch文については、解説済みなので、繰り返し(ループ)文を抜けるプログラムを解説します。
#include <stdio.h>
int main(void)
{
int i;
for(i = 1; i <= 10; i++) {
if(i == 5) {
break;
}
printf("%d\n", i);
}
return 0;
}for文は、1~10までを表示するために、10回繰り返しています。
if文では、変数 i が 5 になったら、break 文が実行され、for文を抜けます。
これにより、プログラムを実行すると出力結果は次のようになります。
1
2
3
4i が 5 になったときに、for文を抜けるため、5 は表示されていないことがわかります。break 文は、if 文ではなく、繰り返し文(for、while、do while)や switch 文を抜けることに注意してください。
continue文
continue文は、繰り返し文の中で使用し、 continue より後の処理をスキップし、次の繰り返し処理に進むための文です。continue 文は、for文・while文・do~while文 の中で使用します。continue の後に続く処理をスキップし、次の繰り返しの判定(ループの先頭)に戻ります。breakとは違い、switch文では使用できません。
構文は次の通りです。
continue;具体的なプログラムの例を解説します。
#include <stdio.h>
int main(void)
{
for(int i = 1; i <= 5; i++) {
if(i == 3) {
continue; // 3のときはprintfを飛ばして次のループへ
}
printf("%d\n", i);
}
return 0;
}このプログラムを実行すると次のように出力されます。
1
2
4
53のときは continue により、printf関数がスキップされることが確認できます。
for 文では、continue 文が実行されると、その行より後の処理をスキップし、次の繰り返しのために更新する式( i++)を実行してから、次の条件判定に進みます。
まとめ
break文:繰り返しやswitch文を途中で終了して抜けるcontinue文:繰り返しの中で残りの処理をスキップして次の繰り返しへ進むbreak文 はswitchでも使えるが、continueはループ専用break文は、if文ではなく、繰り返し文(for、while、do while)や switch 文を抜ける