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