6−6.break文

(1)break文

switchのブロックやループから脱出します。

(使用方法)
  1. switch文で、case句の処理を打ち切りブロックを脱出するときに用いる。 ⇒ 説明済み
  2. for文、while文などのループから脱出するときに、if文と併用して用いる。
(例)
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);
  • この例では、とりあえず 10回ループすることになっていますが、 入力値が -1 だった場合は、直ちにループ処理を打ち切ることになります。

    つまり、「10個の入力データ、または -1 が入力されるまでデータの合計をとる」という処理になっています。

  • break文を多重ループの中で使用した場合は、 そのbreak文の含まれるループからひとつだけ脱出するので注意してください。
(フローチャート)
演習

 

【多重ループを一気に抜けるには】

上記で説明したように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" )へ一気に制御を移すことができます。その有効範囲は関数内部になります。

◆◆前ページ  ▲TOP▲  次ページ◆◆

banner
「初心者のためのポイント学習C言語」
Copyright(c) 2000-2004 TOMOJI All Rights Reserved