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