6−7.continue文

(1)continue文

処理のスキップを行います。

(使用方法)

for、while、do〜while のループの中で処理をスキップさせるために用いる。

通常 if文と併用され、ループ処理の中で、ある条件が成立する場合、それ以下の処理を行わずにスキップする。

(例)
int i = 1, n, sum;

sum = 0;

while (i <= 10) {		…とりあえず 10回ループ

	scanf("%d", &n);
	if (n < 0)	…入力データが負なら
		continue;	 以下の処理をスキップする
		
	sum = sum + n;
	i++;
}
printf("sum = %d\n", sum);
  • この例では、入力値が負だった場合は、sum = sum + n; の処理を行わず、 次の scanf() の処理を実行することになります。

  • continue文は、制御の流れをやや分かりづらくするので、それほど多用されることはありません。
    ただし、if文が幾重にもなり、字下げが強くなったときは、 continue文で字下げなしのスキップ処理をすることが有効なときがあります。

  • continueはループのブロック終了の } の直前に処理をスキップしてから、 その後ループの先頭に戻ります。

 

【continue文をwhile文とfor文の中で使った場合の違い】

実はcontinue文をwhile文の中で用いた場合とfor文の中で用いた場合とでは、スキップの動きが異なります。

下の例に見られるように、while文ではcontinueで「i++;」が実行されないため、負数を入れる限り処理がスキップされます。

ですが、for文ではcontinueでも「i++;」が実行されるため、スキップは5回のみになります。

(while文で用いたcontinue文)
#include	<stdio.h>

int main(void)
{
	int i = 1, n, sum;
 
	sum = 0;
	while (i <= 5) {
		printf("正の整数を入力 : ");
		scanf("%d", &n);
		if (n < 0)
			continue;
		sum = sum + n;
		i++;
	}
	printf("sum = %d\n", sum);
	
	return 0;
}
(for文で用いたcontinue文)
#include	<stdio.h>

int main(void)
{
	int i, n, sum;

	sum = 0;
	for (i = 1; i <= 5; i++) {
		printf("正の整数を入力 : ");
		scanf("%d", &n);
		if (n < 0)
			continue;
		sum = sum + n;
	}
	printf("sum = %d\n", sum);
	
	return 0;
}
(フローチャート)
(フローチャート)
(実行結果)
正の整数を入力してください : -1
正の整数を入力してください : -1
正の整数を入力してください : -1
正の整数を入力してください : -1
正の整数を入力してください : -1
正の整数を入力してください : -1
正の整数を入力してください : -1
	:
	:
(何度-1を入力してもスキップするため終了しない)

 緑字はキーボードからの入力
(実行結果)
正の整数を入力してください : -1
正の整数を入力してください : -1
正の整数を入力してください : -1
正の整数を入力してください : -1
正の整数を入力してください : -1
sum = 0

(i++; が実行されスキップは5回のみ)

 緑字はキーボードからの入力
演習
◆◆前ページ  ▲TOP▲  次ページ◆◆

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