【C++】for文とwhile文の違いとは?|使い分けを初心者向けに解説

サムネイル画像 C++

今回は、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 < 5i <= 5 を間違えると、回数が1回ズレます。配列を扱う時は特に注意です。
  • 初期化・増減の場所がバラバラになる
    回数ループなのにwhile文で書くと、初期化や増減を見落としやすいです。固定回数ならfor文に寄せるとミスを減らせます。

どちらを使うべき?

  • 配列やリストを先頭から順に回す → for文
  • 10回、100回など回数が決まっている → for文
  • 入力が来るまで待つ → while文
  • ゲームが終了するまでループする → while文
  • 迷った時は、回数が見えているならfor文で考えるとわかりやすいです

まとめ

  • for文は、回数が決まっている繰り返しに向いている
  • while文は、条件が成り立つ間の繰り返しに向いている
  • 回数ベースならfor文、条件ベースならwhile文と覚えると使い分けやすい
  • while文は条件更新を忘れると無限ループになりやすい
  • 固定回数の処理を無理にwhile文で書かないことが大切

for文とwhile文は、どちらもよく使う基本文法ですが、使い分けを意識するだけでコードの読みやすさがかなり変わります。

最初は「どちらでも書けそう」と感じるかもしれませんが、何を基準にループを止めたいのかを考えると選びやすくなります。

ここまで読んでくださり、ありがとうございました。

関連記事