サンプルプログラム cntl2.c
(8-2)forループ
forループのフォーマットは、
for ( [初期化式]; [比較式]; [演算式] ) (処理);
処理が複数行にわたる場合には、
for ( [初期化式]; [比較式]; [演算式] ) { (処理1) (処理2) ----- (処理n) }
のように記述します。
まず[初期化式]ですが、forループの一番最初に実行される式で通常はループに使う変数(カウンタ)を初期化するのに使います。
次に[比較式]ですが、ループ内の(処理)を実行する前に評価され、真(true)のときに(処理)が実行されます。
1度でも偽(false)になったらforループを脱出し、次の処理を実行します。
最後に[演算式]ですが、これは(処理)を実行し終わったら実行される式です。
通常はカウンタをインクリメントする式を記述することが多いですが決まっているわけではありません。
ご自由にお使いください。
#include <stdio.h> void main( void ) { int i; for( i = 1; i <= 10; i++ ) { printf( "i = %d\n", i ); } }
上記プログラムの実行結果
i = 1 i = 2 i = 3 i = 4 i = 5 i = 6 i = 7 i = 8 i = 9 i = 10
まず、ループカウンタ i を1で初期化し、i の値が10以下の間だけループし、i の値を出力するプログラムです。 forループの動作がお分かり頂けたでしょうか?
サンプルプログラム cntl2a.c
continue文とbreak文
continue文はループの先頭へ戻る文で、break文はループから脱出する文です。
プログラムを見た方が早いと思いますのでご覧ください。
#include <stdio.h> void main( void ) { int i; for( i = 1; i <= 10; i++ ) { if( i == 1 ) continue; // ① if( i > 5 ) break; // ② printf( "i = %d\n", i ); } }
上記プログラムの実行結果
i = 2 i = 3 i = 4 i = 5
まず①の文ですが、iが1のときcontinue文が実行されます。
continue文はループの先頭(この場合for文)に戻ります。
printf文は実行されませんので i = 1 は出力されません。
次に②ですが、iが5より大きくなった時break文が実行されます。
break文はforループの外に脱出する文なのでこの場合次の処理が無く、プログラムは終了します。