ループからの脱出


・break

 ループの中にbreakを書くと条件に関わらずそのループを抜けます。 また、その回のループのうちbreak以降の処理は実行されずすぐにループを抜けます。

while(!ゲームオーバー)
{
	処理

	if(クリア) break;

	処理
}
上の例ではゲームオーバーになるまでゲームの処理を繰り返し続けるところを、クリアした場合でも繰り返しをやめるようになっています。 クリアした場合、後半の処理の部分は実行されずにループを抜けます。 なお、ゲームオーバーとかクリアとかはそれにあたるものを書くということであり本当にゲームオーバーとか書いたらエラーがでます(←当たり前)。

・continue

 ループの中にcontinueを書くとその回のループはそこで中断され、次のループに進みます。 その回のループのうちcontinue以降の処理が実行されないのはbreakと一緒です。

for(i=0;i<5;i++)
{
	処理1

	if(i==2) continue;

	処理2
}
iが0、1、3、4の時は処理1、2が実行され、iが2の時のみ処理1しか実行されなくなります。 時々breakとcontinueの区別がつかない人がいるので念のため、もし上の例でcontinueの部分がbreakだった場合はiが2の時にループを抜けてしまうのでi=3、4の時の処理は行われません。

・無限ループ

 条件式の値は真偽で表されますが実は真というのは1、偽というのは0のことです。 つまり条件式は0か1の値をとるということになります。 ではwhile(1)のように条件式のところに直接真偽の値をいれたらどうなるでしょうか。 whileは()内が真の間繰り返します。 while(1)はwhile(真)の意味なのでwhile(a==a)のような恒等的に真の条件をいれた時のように常に条件を満たし続けることになります。 つまり一生繰り返し続けることになります。

 プログラム中に無限ループをつくる場合どこかにbreakをいれておかないと終了できなくなってしまうので気をつけましょう。 もしやってしまった場合は外部から強制終了させる(情報棟の場合Ctrl+c)しかなくなってしまいます。