do-while文とは?C言語の繰り返し処理をwhile文との違いも含めてわかりやすく解説

C言語のループ処理には、

  • for文
  • while文
  • do-while文

の3種類があります。

その中でも do-while文 は、
必ず1回は処理が実行されるループ という特徴があります。


目次

do-while文とは

do-while文とは、処理を1回実行してから条件判定を行うループ構文です。

👉 while文との一番の違いはここです


基本構文

C
do
{
    処理;
} while (条件式);

※ 最後にセミコロンが必要なので注意


実行の流れ(ざっくり)

  1. まず処理を実行
  2. 条件式を評価
  3. trueなら繰り返す
  4. falseなら終了

初心者さん

do-whileってあまり見ないけど必要?

初心者さん

whileでよくないですか?

エンジニアくん

“必ず1回実行したい”場面ではかなり便利なんだよ

初心者さん

入力チェックとかですね!


通常のwhile文はこちらの記事で解説しています。

ループ処理にはfor文も良く使われます。

goto文でもループ処理は可能ですが、現在はあまり使われません。

C言語文法解説シリーズ

本記事は「C言語文法解説シリーズ」の1つです。
C言語の文法を、組み込み開発の視点も交えて解説しています。

C言語文法解説シリーズ一覧はこちら

⭐ 1ループごとの動き(ここが重要)

C
int i = 0;

do
{
    printf("%d\n", i);
    i++;
} while (i < 3);

1回目

  • 処理:0を出力
  • 更新:i = 1
  • 条件:1 < 3 → true

2回目

  • 処理:1を出力
  • 更新:i = 2
  • 条件:2 < 3 → true

3回目

  • 処理:2を出力
  • 更新:i = 3
  • 条件:3 < 3 → false

→ 終了


💡 while文との違い(最重要ポイント)

while文

C
int i = 5;

while (i < 3)
{
    printf("実行される?\n");
}

👉 1回も実行されない


do-while文

C
int i = 5;

do
{
    printf("必ず1回実行される\n");
} while (i < 3);

👉 条件がfalseでも1回は実行される


🎯 使いどころ

do-while文が向いている場面

  • 最低1回は処理したい
  • 入力チェック(再入力させる)

例:入力チェック

C
int input;

do
{
    printf("1〜10を入力してください: ");
    scanf("%d", &input);
} while (input < 1 || input > 10);

👉 条件を満たすまで繰り返す


breakとcontinue

break(ループ終了)

C
do
{
    if (条件)
        break;
} while (1);

continue(注意ポイント)

C
int i = 0;

do
{
    i++;

    if (i == 2)
        continue;

    printf("%d\n", i);

} while (i < 5);

👉 continueするとそのまま条件判定へ進む


breakとcontinueの違いの詳細はこちらの記事で解説しています。

⚠️ よくあるミス

セミコロンを忘れる

C
do
{
    printf("Hello\n");
} while (条件)  // ← セミコロン忘れ

👉 コンパイルエラー


まとめ

  • do-whileは後判定ループ
  • 必ず1回は処理が実行される
  • while文とは実行タイミングが違う
  • 入力チェックなどで活躍

この記事が参考になった方へ

制御構文を含むC言語の基本文法をこちらの記事で整理しています。

技術に関するご相談・開発・自動化ツール作成・記事執筆などのご依頼も承っています。

小さなご相談からでもお気軽にご連絡ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

組み込みソフトエンジニアとして働きながら、
C言語・メモリ・ポインタなどの基礎から実務まで解説しています。

副業・キャリアについても実体験ベースで発信中です。

X(旧Twitter)でも発信しています
👉 Xはこちら

▼まずはここから読むのがおすすめ
C言語文法シリーズ
メモリ領域解説シリーズ

コメント

コメントする


目次