
C言語のきほん|while文
「条件が続く間だけ」くり返す。while文で、ループの基本をしっかり身につけよう。
同じ処理を何度もやりたいとき、ループが主役になる
プログラムを書いていると、「これを何回もやりたいな」という場面が本当にたくさん出てきます。
たとえば、
- 入力が正しくなるまで何度も聞き直す
- 合計や平均を出すために、同じ計算を繰り返す
- 一覧を順番に表示する
こういう “くり返し” の仕組みを 繰り返し構造(ループ) と呼びます。
C言語には、繰り返し構造を作るための道具がいくつか用意されています。
| 制御文 | 得意なこと | ざっくりイメージ |
|---|---|---|
| while | 条件が真の間ずっと繰り返す | 条件チェック → 繰り返し |
| for | 回数や範囲が決まっている繰り返し | 初期化・条件・更新がまとまる |
| do~while | とにかく1回は実行したい | 1回実行 → 条件チェック |
| break | 途中で強制終了 | ループから脱出 |
| continue | 今回だけスキップ | 次の周へ |
この中でも while文 は、ループの基本中の基本です。まずはここを押さえると、後のforやdo~whileもスムーズに理解できます。
while文は「前判定」の繰り返し
while文の一番の特徴は、ループに入る前に条件をチェックすることです。
だから、
- 条件が最初から偽なら、1回も実行されない
という動きになります。ここ、けっこう大事です。
ざっくり図で見るwhileの流れ

while文の基本構文
while文はこの形です。
while (継続条件式) {
文;
}
構文の要点(表で整理)
| 要素 | 意味 | ポイント |
|---|---|---|
| 継続条件式 | 真の間は繰り返す条件 | 偽なら1回も実行されないことがある |
| 文 | 繰り返し実行する処理 | 複数行なら{}でブロックにする |
文が1行でも、{}で囲むと読みやすくなるのでおすすめです。
特に学習中は「必ずブロックにする」くらいでちょうどいいです。
while文で大事な3点セット:初期化・条件・更新
while文を使うときは、だいたい次の3つがセットになります。
- 初期化:ループを始める前の準備
- 条件:続けるかどうかの判定
- 更新:次の繰り返しに進むための変化
この「更新」を忘れると、条件が永遠に真のままになって 無限ループ になりやすいです。
whileの最初の壁はここだったりします。
サンプルプログラム
例:所持金がある間、100円ずつ使って回数を数える
- 所持金 money を入力
- 100円使うたびに「あと何円」「何回使った」を表示
- 所持金が100円未満になったら終了
whileの「条件が真の間くり返す」が分かりやすい題材です。
ファイル名:9_1_1.c
// while文で「所持金がある間だけ」100円ずつ使う回数を数えるプログラム
#include <stdio.h>
int main(void)
{
int money;
int count = 0;
printf("所持金を入力してください(円)> ");
scanf("%d", &money);
// 100円以上ある間だけ、100円ずつ使い続ける
while (money >= 100) {
money -= 100; // 100円使う
count++; // 使った回数を増やす
printf("%d回使いました。残りは%d円です。\n", count, money);
}
printf("もう100円は使えません。\n");
return 0;
}実行イメージ
所持金を入力してください(円)> 350
1回使いました。残りは250円です。
2回使いました。残りは150円です。
3回使いました。残りは50円です。
もう100円は使えません。この例は、whileの3点セットが全部入っています。
- 初期化:count = 0(回数を0にする)
- 条件:money >= 100(100円以上なら続ける)
- 更新:money -= 100 と count++(状態が変化する)
while文の流れをもう少し丁寧に追ってみよう
さっきのプログラムを、頭の中で追いやすいように分解してみます。
1) 初期化
- count を 0 にする
- money は入力で決まる
2) 継続条件式を判定
- money >= 100 が真ならループに入る
- 偽ならループに入らず、そのまま次へ
3) ループ本体(繰り返し処理)
- money を 100 減らす
- count を 1 増やす
- 状況を表示する
4) 条件判定に戻る
- again:money >= 100 をチェック
- 偽になったら終了
流れ図っぽくするとこう

「1回も実行されない」ケースをわざと考える
whileは前判定なので、入力がこうだとどうなるでしょう?
- money = 50
条件 money >= 100 は最初から偽です。
つまり、ループ本体は一度も実行されません。
実行イメージ
所持金を入力してください(円)> 50
もう100円は使えません。ここで「え、何も表示されないの?」ってならないように、ループの外側に終了メッセージを置くのはよくある書き方です。
ループで使う変数の呼び方(カウンタ変数など)
whileの中で回数を数える変数は、よくこう呼ばれます。
| 呼び方 | 意味 | 例 |
|---|---|---|
| カウンタ変数 | 回数を数える | count, i |
| ループ変数 | ループ全般で使う | i, j, k |
| インデックス変数 | 配列の要素番号を指す | i, index |
i は index の略として慣例的によく使われます。
ただ、今回みたいに「回数を数える」なら count のほうが意味が伝わって親切です。
while文を書くときのコツ(読みやすさと事故防止)
インデントは必ず付ける
動く・動かない以前に、ループは見た目が命です。
字下げがないコードは、読む側がとても疲れます。
1行でもブロックにする癖を付ける
後から行が増えたときに、事故を防げます。
更新が本当に起きているか確認する
無限ループを避けるために、次をチェックすると安心です。
- 条件で使っている変数が、ループ内でちゃんと変化しているか
- いつか条件が偽になる道筋があるか
こういう観点でwhile文を見られるようになると、ループの理解が一気に安定します。
