参照⇒goto文、構造化プログラミング

break, continue の特別なgoto文

構造化プログラミングを行うことで、プログラムが分かりやすくなるのですが、 時として冗長的で、長いプログラムになる場合があります。
そこで現在のプログラミングスタイルでは、繰り返しを強制的に終了させる場合と、 残りをスキップして繰り返しを継続させる場合に使う特別なgotoの使用を許しています。
この特別なgoto文は言語仕様の中で始めから用意されているのが普通で、C言語では、breakとcontinueがそれになります。
breakは、do〜while 、while、 for 繰り返しで使い、その繰り返しを強制終了させる命令で、
continueは、繰り返し範囲で、残りの記述をスキップして繰り返しを継続する命令です。
なお、繰り返しに対してではないのですが、returnも関数を強制終了できるので、 結果的に繰り返し終了に使われる場合があります。 これら例を以下に示します。

100以上の入金だけを取り扱って、その入金回数と 合計をグローバル変数に記憶する関数を定義し、 それを2回呼び出して平均を算出する実行例(赤が入力です)とプログラム例です。 プログラムによって、【1】のコメントの行が複数で存在し、少しだけ冗長的なプログラムになります。

1回目入金>200
2回目入金>150
3回目入金>80
3回目入金>250
4回目入金>end
100円以上の入金平均額は200です。
4回目入金>400
5回目入金>100
6回目入金>100
7回目入金>200
8回目入金>end
100円以上の入金平均額は200です。
#include <stdio.h>
int sum;		/* 合計 */
int count;		/* 入力回数 */

void input_sum()
{
	int data;		/* 入力データ用 */

	printf("%d回目入金>", count+1 );/* 【1】*/
	while( fscanf(stdin, "%d" ,  & data) == 1){
		if(data >= 100){
			sum += data;
			count++;/* 回数計数 */
		}
		printf("%d回目入金>", count+1 );/* 【1】をコピーした同じ記述 */
	}

	fflush(stdin); /* 入力バッファにある情報を破棄する */
}

main()
{
	input_sum();
	printf("100円以上の入金平均額は%dです。\n", sum/count);
	input_sum();
	printf("100円以上の入金平均額は%dです。\n", sum/count);
}

上記を、 へ変更します。

なお参考に、for文におけるbreakやcontinueの実行移動位置を、矢印により示します。
下記の矢印では青がcontinue、赤がbreakを実行した時に移動する位置を示します。