今回は、C++での「for文とwhile文の違いと使い分け」について解説していきます。
「for文とwhile文って何が違うの?」
「どっちを使っても同じように繰り返せるけど、どう使い分ければいいの?」
「初心者はとりあえずfor文を使えばいいの?」
こんな疑問はありませんか?
この記事を読み終えると、あなたはfor文とwhile文の違い・向いている場面・使い分けの基準をしっかり理解できるようになると思いますので、ぜひ最後まで読んでいただけると嬉しいです。
for文とwhile文の違い
for文は、「何回繰り返すか」が比較的はっきりしている時に向いているループです。
while文は、「条件が成り立っている間は続ける」時に向いているループです。
どちらも繰り返し処理を書くための文ですが、回数ベースで考えるか、条件ベースで考えるかで向き不向きが変わります。
for文の特徴
for文は、初期化・条件・増減を1行にまとめて書けるのが特徴です。
「0から9まで回したい」「5回だけ処理したい」といった、繰り返し回数がわかっている場面で特に使いやすいです。
ループ変数でよく使う i++ と ++i の違いが気になる方は、こちらの記事もあわせて読むと理解しやすいです。
▼main.cpp
#include <iostream>
int main() {
for (int i = 1; i <= 5; i++) {
std::cout << "ステージ" << i << "\n";
}
return 0;
}実行結果
ステージ1
ステージ2
ステージ3
ステージ4
ステージ5
このように、開始値・終了条件・増え方がまとまっているので、何回ループするのかがひと目でわかりやすいです。
while文の特徴
while文は、条件がtrueの間だけ処理を続けます。
そのため、「何回繰り返すか」よりも、いつ終わるかが条件で決まる場面で使いやすいです。
▼main.cpp
#include <iostream>
int main() {
int hp = 50;
while (hp > 0) {
std::cout << "敵のHP: " << hp << "\n";
hp -= 20;
}
std::cout << "敵を倒しました\n";
return 0;
}実行結果
敵のHP: 50
敵のHP: 30
敵のHP: 10
敵を倒しました
この例では、HPが0より大きい間だけループしています。終了回数を直接決めるのではなく、条件で制御しているのがwhile文の特徴です。
実践的な使い分け例
使い分けの基準は、かなりシンプルです。
- 回数が決まっているなら for文
- 終わる条件が決まっているなら while文
たとえば、ゲーム制作なら以下のようなイメージです。
- 敵を10体分更新する → for文
- ゲームオーバーになるまでメインループを回す → while文
また、ループの中で条件分岐をしたい場面もよくあります。条件分岐の考え方を整理したい方は、if文とswitch文の使い分けの記事も参考になります。
for vs while 比較表
| 比較項目 | for文 | while文 |
|---|---|---|
| 向いている場面 | 回数が決まっている処理 | 条件が続く間の処理 |
| 見やすさ | 回数管理がまとまりやすい | 条件中心で書きやすい |
| 無限ループの起きやすさ | 比較的少ない | やや起きやすい |
| よくある用途 | 配列走査、固定回数ループ | ゲームループ、入力待ち、状態監視 |
【重要】私が実際にfor文とwhile文で困った体験談
私も自主制作のゲームで、while文の使い方を雑にしてハマったことがあります。
敵の出現演出が終わるまで待つ処理を書いた時に、while (isPlaying == true) のようなループを作ったのですが、ループの中でそのフラグを書き換える処理が抜けていました。
その結果、ゲームがその場で止まったように見える無限ループになってしまい、最初は描画処理が壊れたのかと思ってかなり焦りました。
逆に、敵を配列で順番に更新する処理はfor文にしたところ、回数もわかりやすく、どこで増えているかも明確になってかなり読みやすくなりました。
この経験から、私は「回数が見えている処理はfor文」「終了条件を追いたい処理はwhile文」と意識するようになりました。これだけでもコードの見通しがかなり良くなります。
for文・while文使用時のよくあるエラーと対処法
- while文で条件を更新し忘れる
ループ内で変数やフラグが変わらないと、無限ループになります。条件に使っている値が本当に変化するかを確認しましょう。 - for文で条件を1つずらしてしまう
i < 5とi <= 5を間違えると、回数が1回ズレます。配列を扱う時は特に注意です。 - 初期化・増減の場所がバラバラになる
回数ループなのにwhile文で書くと、初期化や増減を見落としやすいです。固定回数ならfor文に寄せるとミスを減らせます。
どちらを使うべき?
- 配列やリストを先頭から順に回す → for文
- 10回、100回など回数が決まっている → for文
- 入力が来るまで待つ → while文
- ゲームが終了するまでループする → while文
- 迷った時は、回数が見えているならfor文で考えるとわかりやすいです
まとめ
- for文は、回数が決まっている繰り返しに向いている
- while文は、条件が成り立つ間の繰り返しに向いている
- 回数ベースならfor文、条件ベースならwhile文と覚えると使い分けやすい
- while文は条件更新を忘れると無限ループになりやすい
- 固定回数の処理を無理にwhile文で書かないことが大切
for文とwhile文は、どちらもよく使う基本文法ですが、使い分けを意識するだけでコードの読みやすさがかなり変わります。
最初は「どちらでも書けそう」と感じるかもしれませんが、何を基準にループを止めたいのかを考えると選びやすくなります。
ここまで読んでくださり、ありがとうございました。


