break・continueはともに繰り返し処理中で使われる便利な機能です。
記事の内容
- break・continueとは何か
- breakは多重ループをどこまで抜けるのか
- if文内(ループなし)でbreakを使うことはできない
breakとは繰り返し処理から抜け出す命令
breakはfor文とwhile文中でif文とともに使われます。
switch文中で使う方法は以下の記事で解説しています。
switch文の書き方
-
【C言語】変数のスコープとは?static・ローカル・グローバル変数の違い
C言語やC++を勉強しているとたまに出てくる変数のスコープって何?難しそうだからわかりやすく解説してほしい。 ローカル変数とグローバル変数とstatic変数って何が違うの? こんな疑問にお答えします。 ...
続きを見る
if文とfor文の組み合わせ
breakを使うとforループを途中で抜けられます。
breakが実行されるとfor文内でbreakより後に書いてある処理は実行されず、即座にforループから抜けます。
例:
#include <stdio.h> void main() { for(int i=0; i<10; ++i) { if(i>3) break; printf("i=%d\n",i); } printf("End\n"); }
実行結果
i=0
i=1
i=2
i=3
End
if文とwhile文の組み合わせ
breakを使えばwhileループも途中で中断して抜けることができます。
例:
#include <stdio.h> void main() { int i=0; while(1) { i=i+1; if(i>3) break; printf("i=%d\n",i); } printf("End\n"); }
実行結果
i=1
i=2
i=3
End
do while文でも同じように使えます。
continueとは次のループを実行する命令
continueはfor、while文中でifと一緒に使います。
if文とfor文の組み合わせ
continueを使うとcontinue以降の処理はスキップして次のループに入ります。
下の例ではiが0より大きくなるとcontinueが適用され、その下のprintf文は実行されずに次のループに行きます。
例:
#include <stdio.h> void main() { for(int i=0; i<3; ++i) { printf("Loop Start\n"); if(i>0) continue; printf("i=%d\n",i); } printf("End\n"); }
実行結果
Loop Start
i=0
Loop Start
Loop Start
End
if文とwhile文の組み合わせ
while文でもcontinue以降の処理はスキップして次のループに入ります。
例:
#include <stdio.h> void main() { int i=0; while(i<3) { printf("Loop Start\n"); i=i+1; if(i>1) continue; //i=i+1;と場所を入れ替えると無限ループ printf("i=%d\n",i); } printf("End\n"); }
実行結果
Loop Start
i=0
Loop Start
Loop Start
End
ただし、ループを抜けるとこはできないのでwhile(1)で使う時は無限ループに注意してください。
iのインクリメントより先にcontinueを置いた場合も無限ループになりがちです。
continueはdo while文でも同じように使えます。
breakは多重ループをどこまで抜けるのか
以下のように2重ループ内でbreakを使うと内側のfor文だけを抜け、外側のループは最後まで実行されます。
例:
#include <stdio.h> void main() { for(int j=0; j<2; ++j) { for(int i=0; i<10; ++i) { if(i==0) break; printf("Loop1"); } printf("Loop2\n"); //この位置にbreakを入れると外側のループを抜ける } }
実行結果
Loop2
Loop2
今回はbreakをif文の中に入れましたが、if(i==0)を消して「break;」のみにしても結果は同じです。
逆に「if(i==0){if(j<2) break;}」のようにif文を多重にしても同じ結果になります。
つまりbreakはif文の書き方に関わらず、一番内側のループの外に出よという命令なのです。
外側のループも抜けたければコメントに書いた位置にもbreakを入れます。
if文内(ループなし)でbreakを使うことはできない
例えば以下のようにif文内であってもループまたはswitch文の外でbreakを使うとコンパイル時にエラーが出ます。
例:
#include <stdio.h> void main() { int i=0; if(i>3) break; }
エラー文
breakは繰り返し処理内でしか使えません。
まとめ:break・continueはif・for・while文中で使える便利機能
break・continueは繰り返し処理を都合のいい位置で終わらせたいときに使える便利な機能です。
breakはループを1つ抜ける、continueは即座に次のループに移るという命令になります。
C言語で行き詰まったら…
-
C言語・C++がわからない時に質問できるサイト・サービス5選
C言語を独学で勉強しているけど内容がイマイチわからない。もはや何がわからないのかもわからない。 C++のエラーが解決できない。ググってもわからない。わかる人に解説してほしい。 こんなお悩みにお答えしま ...
続きを見る