switchのブロックやループから脱出します。
(例)int i, n, sum; sum = 0; for (i = 1; i <= 10; i++) { …とりあえず 10回ループ scanf("%d", &n); if (n == -1) …入力データが -1 なら break; ループから脱出 sum = sum + n; } printf("sum = %d\n", sum);
|
(フローチャート) |
【多重ループを一気に抜けるには】
上記で説明したようにbreak文を使って抜けられるのはループひとつだけです。ですから、二重、三重のループを抜けるには、その度にbreak文を使うようになります。
下の例では三重ループを抜けるのに、3回breakしています。
#include <stdio.h> int main( void ) { int i, j, k, no = 1; for (i=1; i<=10; i++) { for (j=1; j<=10; j++) { for (k=1; k<=10; k++) { no = no + (i * j + k); if (no >= 2000) break; } if (no >= 2000) break; } if (no >= 2000) break; } printf("i:%d j:%d k:%d\n",i,j,k); return 0; }
多重ループを一気に抜けるには一般にgoto文が使われます。構造化プログラミングでは用いないようにと教えられるgoto文ですが、この場合に限り使用してもかまわないでしょう。
#include <stdio.h> int main( void ) { int i, j, k, no = 1; for (i=1; i<=10; i++) { for (j=1; j<=10; j++) { for (k=1; k<=10; k++) { no = no + (i * j + k); if (no >= 2000) goto OUT; } } } OUT: printf("i:%d j:%d k:%d\n",i,j,k); return 0; }
goto文では、コロン(:)を付けたラベル(上記では "OUT" )へ一気に制御を移すことができます。その有効範囲は関数内部になります。
「初心者のためのポイント学習C言語」 Copyright(c) 2000-2004 TOMOJI All Rights Reserved