
C言語入門|while と do-while の違い:前置判定と後置判定のしくみ
「while 文って、もう分かった気がするんだけど……
あれ? do-while って何が違うの?」
そんなふうに感じた人、実はとても多いです😊
見た目はよく似ている while と do-while ですが、
“条件をいつ判定するか” という点で、はっきりとした違いがあります。
この違いを理解すると、
- ループが1回も実行されない理由
- 必ず1回は処理したい場面
- 無限ループを防ぐ考え方
が、スッと腑に落ちるようになります。

while 文の基本:前置判定の繰り返し
まずは、基本となる while 文から確認しましょう。

while 文の書式
while (条件式) {
ブロック
}while 文は、
ブロックを実行する前に条件式を評価 します。
この判定方法を 前置判定 と呼びます。
while 文の動き(考え方)
処理の流れを言葉で表すと、次のようになります。
- 条件式を評価する
- 条件が真ならブロックを実行
- 再び条件式を評価
- 条件が偽になったら終了
つまり、
最初の条件チェックで偽なら、1回も実行されません。
サンプルプログラム(while 文)
プロジェクト名:5-5-1 ソースファイル名: sample5-5-1.c
#include <stdio.h>
int main(void)
{
int count = 0;
while (count > 0) {
printf("カウント中です\n");
count--;
}
printf("処理が終わりました\n");
return 0;
}このプログラムでは、
count の初期値が 0 なので、条件式 count > 0 は最初から偽です。
そのため、
- ループ内の printf は一度も実行されない。
- すぐに「処理が終わりました」が表示される。
という結果になります。
do-while 文の基本:後置判定の繰り返し
次に、do-while 文を見てみましょう。

do-while 文の書式
do {
ブロック
} while (条件式);while 文と違って、
最後にセミコロンが必要 な点に注意してください。
do-while 文の動き(考え方)
do-while 文は、
ブロックを実行したあとに条件式を評価 します。
この判定方法を 後置判定 と呼びます。
流れは次のとおりです。
- まずブロックを実行
- 条件式を評価
- 真ならブロックへ戻る
- 偽なら終了
つまり、
条件が偽であっても、必ず1回は実行される
というのが最大の特徴です。
サンプルプログラム(do-while 文)
プロジェクト名:5-5-2 ソースファイル名: sample5-5-2.c
#include <stdio.h>
int main(void)
{
int count = 0;
do {
printf("最低1回は表示されます\n");
count--;
} while (count > 0);
printf("処理が終わりました\n");
return 0;
}この場合も count の初期値は 0 ですが、
- 先にブロックが実行される。
- その後で条件式が評価される。
ため、「最低1回は表示されます」が必ず表示されます。
while と do-while の違いを整理しよう
ここで、両者の違いを表にまとめてみましょう。
| 項目 | while 文 | do-while 文 |
|---|---|---|
| 判定のタイミング | 実行前 | 実行後 |
| 判定方式 | 前置判定 | 後置判定 |
| 最低実行回数 | 0回 | 1回 |
| セミコロン | 不要 | 必要 |
この表を見ると、
「どちらを使うべきか」の判断基準が見えてきますね😊
どんな場面で do-while を使うの?
do-while 文は、次のような場面で特に力を発揮します。
- 入力を必ず1回は受け取りたい。
- メニューを最低1回は表示したい。
- 初期状態でも処理を実行したい。
たとえば、
- ユーザー入力の再入力処理
- ゲームの1ターン目
- 初期メッセージ表示
などが、典型的な使いどころです。
「必ず1回」は、意図して使うのが大事
do-while 文は便利ですが、
「気づかないうちに1回実行されてしまった」
というバグの原因にもなりやすい構文です。
だからこそ、
- なぜ do-while を使っているのか
- 1回は必ず実行したい理由は何か
を、自分で説明できる状態で使うことが大切です😊
