AI AIワークナビ AI Work Studio
メニュー
AIワークナビ ホーム

C言語のwhile文をブラウザで練習|条件と更新の基本

C言語のwhile文は、条件が成り立っている間、同じ処理を繰り返す構文です。回数を先に決めるfor文とは違い、「条件を満たす間だけ続けたい」ときに書きやすい一方、変数の更新を忘れると処理が終わりません。この記事では、3から1までのカウントダウンをブラウザで動かし、条件と更新の位置を順番に確認します。

結論

while文では、繰り返す前に使う変数を用意し、丸括弧に継続条件を書き、波括弧の中で変数を更新します。次の例は、countが1以上の間だけ数字を表示します。

#include <stdio.h>

int main() {
    int count = 3;

    while (count >= 1) {
        printf("%d\n", count);
        count--;
    }

    printf("Start!\n");
    return 0;
}

発生している問題

初心者がつまずきやすいのは、表示と更新の順序です。次のコードは先にcount--を実行してから表示するため、最初の3が表示されず、最後に0が表示されます。プログラムは正常終了しますが、期待したカウントダウンにはなりません。

修正前コード

#include <stdio.h>

int main() {
    int count = 3;

    while (count >= 1) {
        count--;
        printf("%d\n", count);
    }

    printf("Start!\n");
    return 0;
}

実行結果は次のとおりです。

2
1
0
Start!

原因

while (count >= 1)の条件は、波括弧の中へ入る前に毎回確認されます。最初はcountが3なので処理へ進みますが、波括弧の先頭で2へ減らしてから表示するため、3を飛ばしてしまいます。

C言語の委員会草案N1570の6.8.5では、繰り返し文は制御式が0と比較して等しくなるまで繰り返すとされ、6.8.5.1ではwhileの制御式をループ本体の実行前に評価すると説明されています。この順序を意識すると、条件、表示、更新を置く場所を判断しやすくなります。

修正後コード

期待どおり3、2、1と表示するには、printfを先に、count--を後に置きます。1を表示した後にcountが0になり、次の条件確認で0 >= 1が偽になるため、ループを抜けます。

#include <stdio.h>

int main() {
    int count = 3;

    while (count >= 1) {
        printf("%d\n", count);
        count--;
    }

    printf("Start!\n");
    return 0;
}

実行結果

3
2
1
Start!

ローカルのGCC 16.1.0とAI Work StudioのC/C++タブで同じコードを実行し、どちらも同じ順番と終了コード0を確認しました。結果はConsoleに表示され、Previewには表示する内容がありません。標準入力を使わないため、入力欄は空のままで実行できます。

while文で1から5の合計を求める

カウントダウン以外でも、条件と更新の考え方は同じです。次のコードはnumberが5以下の間、totalへ値を足してからnumber++で1増やします。

#include <stdio.h>

int main() {
    int number = 1;
    int total = 0;

    while (number <= 5) {
        total += number;
        number++;
    }

    printf("Total: %d\n", total);
    return 0;
}

実行結果は次のとおりです。

Total: 15

この例もローカルとAI Work Studioの両方で実行し、出力が一致しました。numberの初期値、number <= 5という条件、number++という更新の3つがそろっていることがポイントです。

よくある間違い

更新を忘れて無限ループになる

波括弧の中からcount--をなくすと、countは3のままです。count >= 1がずっと真になり、同じ表示を繰り返します。ブラウザで実行する前に、条件に使う変数がループ内で変化するか確認しましょう。

条件の境界を間違える

count > 1なら1は表示されません。1まで含める場合はcount >= 1、5まで含めて足す場合はnumber <= 5のように、境界の値を含むかを決めます。

更新を表示より前に置く

更新を先に行うと、今回の修正前コードのように3を飛ばして0を表示します。現在の値を使ってから次の値へ進みたい場合は、表示や計算の後に更新を書きます。

AI Work Studioで試す手順

  1. AI Work Studioを開き、C/C++タブを選びます。
  2. 修正前コードを貼り、「C/C++を実行」を押します。
  3. Consoleが210Start!の順になることを確認します。
  4. count--printfの後ろへ移動して、もう一度実行します。
  5. 321Start!になれば、表示と更新の順序を確認できています。
  6. 合計のコードへ置き換え、Total: 15になることも試してみましょう。

まとめ

C言語のwhile文は、条件をループ本体の実行前に確認し、真の間だけ処理を繰り返します。期待どおりに終わらせるには、初期値、条件、更新の3つをセットで確認することが大切です。現在の値を使ってから更新するのか、更新してから使うのかで結果が変わるため、処理の順番も1行ずつ追いましょう。

関連記事