for文の基本的なルール
ループ処理を行う文としてwhile文とdo-while文の説明をしましたが、C言語にはもう一つのループ処理の方法があります。for文は最もよく使われるループで、C言語以外のプログラミング言語でも用意されている場合が多いです。
for (A前処理;B条件式;Cループ処理) {
文1;
文2;
...
}
for文の括弧の中にA前処理,B条件式Cループ処理の三つの文を書きます。A前処理はfor文のループ前に一度だけ評価、実行されます。次にB条件式を評価し条件式が真の場合ループをします。ループの最後にCループ処理が実行されます。BとCはループのたびに評価、実行されます。また、for文は条件が真の場合ループ処理をするのでwhile文と構造が同じです。下の疑似コードのようにwhile文に書き換えることもできます(実は、厳密にはfor文とwhile文の内部的な処理はことなります。4-7で説明します。)。
A前処理;
while (B条件式) {
文1;
文2;
...
Cループ処理;
}
よく使われる書き方
以下にfor文のサンプルコードを示します。
#include <stdio.h>
int main(void){
int i;
for (i=1;i<10;i++) {
printf("i=%d\n",i);
}
return 0;
}
実行結果
i=1
i=2
i=3
i=4
i=5
i=6
i=7
i=8
i=9
まずi=1と初期化します。条件式i<10が真の時、ループ本体のprintf関数が実行されます。その後Cループ処理のi++が実行されます。
無限ループ
for文中のA前処理,B条件式,Cループ処理はそれぞれ省略できます。特にB条件式を省略すると条件式は常に真とみなされます。つまり、B条件式を省略すると無限ループになってしまいます。while文の部分で説明したように、無限ループになる場合は途中でbreak文を使ってループを抜け出さなければなりません。
#include <stdio.h>
int main(void){
int i;
for (i=1;;i++) {
printf("i=%d\n",i);
if (i=10) break;
}
return 0;
}
実行結果
i=1
i=2
i=3
i=4
i=5
i=6
i=7
i=8
i=9
i=10
まとめ
決まった回数だけループするときは、for文を使用するのが一般的である。
条件式に何も指定しないと、無限ループになる。
コメント