■whileで記述すると4行も必要
void W(void){
int i;//(1)変数宣言
//この間が実務では結構離れていたりする
i = 0 ;//(2)初期化式
while(i < 10){//(3)ループ条件式
printf("W:%d\n",i);
i++;//(4)更新式
}
}
while文は
(1)変数宣言、
(2)初期化式、
(3)ループ条件、
(4)更新式
で4行も必要です。
■for文なら1行で書けるので楽
void F(void){
for(int i=0;i < 10;i++){
printf("F:%d\n",i);
}
}
変数宣言、初期化式、ループ条件、更新式が
1行で書けます。
C99仕様ではループカウンタ変数をfor文ブロック内で宣言する事で変数の可視範囲を局所化する事が出来ます(=要するに、見る範囲が限定されるので変数をあちこち見なくて済みます)
■for文の第1式と第3式に書く事が無い時
void F2(void){
char line[1024];
for(;fgets(line,1024,stdin)!= NULL;){
printf("F:%s",line);
}
}
for文の第一式と第三式に書く事がなければwhileが自然です。
■while文が自然な例
void W2(void){
char line[1024];
while(fgets(line,1024,stdin)!= NULL){
printf("W:%s",line);
}
}
「標準入力から読めるあいだ回れ」と自然に読めませんか?
■まとめ
「whileにするかforにするかは好みの問題である」と
聖典プログラミング言語Cに書いています。
迷ったら、とにかくfor文で書いてみましょう。
for文第1式と第3式に書く事がなければ
while文が自然です。