
C言語のきほん|for文とwhile文の使い分け
同じループでも、伝わり方が変わる。forとwhileを“目的で選ぶ”だけでコードが読みやすくなる。
forとwhileは動きは同じ、でも「意図の見せ方」が違う
for文とwhile文は、見た目の書き方は違いますが、実はループの流れ自体は同じです。
どちらも基本はこの3点セットで動きます。
- 初期設定(最初の準備)
- 継続条件(続けるかの判定)
- 再設定(次の周のための更新)
違いは何かというと、その3点セットをどこに書くか、そして 何を強調して読ませたいか なんですね。
- forは「回数・範囲」を1行で見せやすい
- whileは「条件が成り立つ間」をそのまま書きやすい
だから、動きは同じでも「読み手に伝わる意図」が変わります。ここを意識して選べるようになると、一段レベルアップです。
for文とwhile文の処理の流れは同じ
まずは共通点をはっきりさせます。
whileでもforでも、処理は次の順番で進みます。

つまり、ループの動作だけ見れば「どっちでもできる」んです。
同じ処理をwhileとforで書き比べる
以下は、3回だけメッセージを表示するプログラムです。
回数がはっきりしているので、forが得意そう…というのも分かりやすい題材です。
サンプルプログラム:while版
ファイル名:9_5_1.c
// whileで3回メッセージを表示するプログラム
#include <stdio.h>
int main(void)
{
int count = 1; // 初期設定(カウンタ変数の準備)
while (count <= 3) { // 継続条件(3回まで繰り返す)
printf("こんにちは!%d回目の表示です。\n", count);
count++; // 再設定(次の回のために更新)
}
return 0;
}サンプルプログラム:for版
ファイル名:9_5_2.c
// forで3回メッセージを表示するプログラム
#include <stdio.h>
int main(void)
{
for (int count = 1; count <= 3; count++) { // 初期設定・継続条件・再設定
printf("こんにちは!%d回目の表示です。\n", count);
}
return 0;
}どちらも出力は同じになります。
でも、for版は「3回だけやる」が1行で見えるので、読む側は理解が速いことが多いです。
書き方の違いを3点セットで対応させる
whileは3点セットが分散する
| 役割 | whileで書く場所 |
|---|---|
| 初期設定 | ループの前 |
| 継続条件 | whileの() |
| 再設定 | ループの中 |
forは3点セットがまとまる
| 役割 | forで書く場所 |
|---|---|
| 初期設定 | forの1つ目 |
| 継続条件 | forの2つ目 |
| 再設定 | forの3つ目 |
この「まとまり」が、forの読みやすさにつながります。
一般的な使い分け:○回ならfor、~の間ならwhile
文書にあった定番の言い方を、もう少し噛み砕くとこうです。
- for:回数や範囲が最初から決まっていて、カウンタで回す
- while:終了条件が状況次第で、条件が成り立つ間だけ回す
使い分け早見表
| 目的 | おすすめ | 例 |
|---|---|---|
| 1からNまで、0から9までなど範囲が明確 | for | 1〜100表示、配列を先頭から末尾まで |
| 入力が正しくなるまで続ける | while | 正しい値が入るまで再入力 |
| 0が入力されるまで続ける | while | センチネル入力で終了 |
| 両方でも書けるが意図を明確にしたい | 目的で選ぶ | 読み手に優しいほう |
どっちでも書けるけど、選ぶ基準は「読みやすさ」と「意図」
ここ、すごく大事です。
forとwhileはどちらでも書ける場合が多いので、最後は「読みやすいか」「意図が伝わるか」で決めるのが強いです。
例:回数が決まってるならforが自然
- 3回表示
- 10回繰り返す
- 1からNまで合計
こういうのをwhileで書くと、初期化と更新が離れてしまい、読み手が探す情報が増えます。
逆にforなら、ループの形が1行で完結します。
例:終了条件が主役ならwhileが自然
- 入力が0になるまで
- ファイルの終わりまで
- 条件が満たされるまで
こういうのをforで書くと、「forなのに回数が見えない」不自然さが出やすいです。
whileなら条件がそのまま書けて、意図が伝わります。
迷ったときの決め方(実戦的)

この判断ができれば、forとwhileの使い分けはかなり安定します。
