C言語

breakとcontinueの使い方(繰り返しの制御)

繰り返しの処理では、「途中で止めたい」または「一部の処理をスキップしたい」場合があります。
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文では、変数 i5 になったら、break 文が実行され、for文を抜けます。
これにより、プログラムを実行すると出力結果は次のようになります。

1
2
3
4

i5 になったときに、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
5

3のときは continue により、printf関数がスキップされることが確認できます。

for 文では、continue 文が実行されると、その行より後の処理をスキップし、次の繰り返しのために更新する式( i++)を実行してから、次の条件判定に進みます。

まとめ

  • break 文:繰り返しや switch 文を途中で終了して抜ける
  • continue 文:繰り返しの中で残りの処理をスキップして次の繰り返しへ進む
  • break文 は switch でも使えるが、continue はループ専用
  • break 文は、if 文ではなく、繰り返し文(for、while、do while)や switch 文を抜ける

-C言語