【2026年8月最新】C言語のwhile文・do-while文の使い方完全ガイド|break・continue文の使い分けとよくある間違い
「while文とdo-while文って、結局何が違うの?」「break文とcontinue文の使い分けがいまいち分からない」——C言語の学習でループ処理につまずく人は非常に多く、実はプログラマー経験者でも改めて説明しようとすると言葉に詰まることがあるテーマです。
この記事では、C言語のwhile文・do-while文の基本構文から、ループを制御するbreak文・continue文、複数条件の組み合わせ方、while(1)による無限ループの作り方と安全な終了方法まで、実際に動かして確認できるコード例つきで解説します。
この記事を最後まで読むと、次の6つが明確になります。
01 WHILE BASICS while文とは?基本構文と動作の仕組み 「条件を満たす間、繰り返す」という考え方を理解する
while文は、C言語における繰り返し処理(ループ)の基本構文の1つです。「ある条件式がtrue(真)である間、処理を繰り返し実行し続ける」というシンプルな仕組みで動きます。基本構文は以下の通りです。
while (条件式) {
// 条件式がtrueの間、繰り返し実行される処理
}
📚 用語解説
条件式:true(真)またはfalse(偽)のどちらかに評価される式のこと。「i < 5」のような比較演算子を使った式が代表的です。while文は、この条件式がtrueの間だけループを繰り返します。
while文の動きを言葉で説明すると、以下の4ステップの繰り返しになります。
true/falseを
判定
{ }内の処理を
1回実行
再び条件式を
評価
{ }の次の行に
処理が進む
重要なポイントは、条件式の評価が「処理を実行する前」に行われることです。つまり、最初から条件式がfalseであれば、while文の中身は一度も実行されません。この性質は、次の章で解説するdo-while文との違いに直結します。
📚 用語解説
変数:値を入れておく箱のようなもの。名前をつけておき、後から値を読み書きできます。「int i = 0;」は「iという名前の整数(int)の変数を用意し、初期値0を入れる」という意味です。
02 WHILE IN PRACTICE while文の使い方(サンプルコード付き) 実際にコードを動かして、繰り返し処理の流れを確認する
実際にwhile文を使ったサンプルコードで動きを確認しましょう。以下は「0から数えて、条件を満たす間だけ処理を繰り返す」典型的な例です。
#include <stdio.h>
int main(void) {
int i = 0;
while (i < 5) {
printf("%d回目の処理です\n", i + 1);
i++; // iを1増やす(これを忘れると無限ループになる)
}
return 0;
}
実行結果
1回目の処理です 2回目の処理です 3回目の処理です 4回目の処理です 5回目の処理です
このコードでは、変数iを0から始めて、i < 5という条件式がtrueである間だけ処理を繰り返しています。ループの中でi++(iに1を足す処理)を実行しているため、iは0→1→2→3→4と増えていき、iが5になった時点で条件式がfalseになりループが終了します。
「回数があらかじめ決まっている繰り返し」はfor文、「ある条件を満たす間だけ繰り返したい」場合はwhile文、「最低1回は実行してから条件を判定したい」場合はdo-while文、と覚えておくと使い分けに迷いにくくなります。
2-1. while文でよくある活用パターン
while文は「回数が事前に分からない繰り返し」で特に力を発揮します。たとえば、以下のような場面です。
03 DO-WHILE do-while文の使い方|whileとの違い 「最低1回は実行してから条件を確認する」ループ
do-while文はwhile文の仲間ですが、条件式を評価するタイミングが「処理の後」という点が決定的に異なります。基本構文は以下の通りです。
do {
// 条件に関わらず、最低1回は実行される処理
} while (条件式); // 末尾にセミコロンが必須
do-while文は唯一「while(条件式);」の末尾にセミコロンが必要な構文です。忘れるとコンパイルエラーになります。通常のwhile文(do-whileではない方)にはセミコロンが不要なため、混同して書き忘れる初心者は少なくありません。
do-while文とwhile文の違いを、実際のコードで比較してみましょう。以下は「変数iの初期値が条件を満たさない場合」に、両者でどう挙動が変わるかを示す例です。
// while文の場合
int i = 10;
while (i < 5) {
printf("この行は実行されません\n");
}
printf("while文終了\n");
// do-while文の場合
int j = 10;
do {
printf("この行は必ず1回実行されます(j=%d)\n", j);
} while (j < 5);
printf("do-while文終了\n");
実行結果
while文終了 この行は必ず1回実行されます(j=10) do-while文終了
📚 用語解説
コンパイラ:人間が書いたC言語のソースコードを、コンピュータが実行できる形式(機械語)に変換するソフトウェア。文法の間違い(セミコロンの付け忘れなど)があると、コンパイルの段階でエラーとして教えてくれます。
この例では、変数iもjも初期値10で、条件式は「5未満」なので最初からfalseです。while文の中身は一度も実行されませんが、do-while文は条件に関わらず必ず1回は実行されます。この違いを理解しているかどうかで、意図しないバグを防げるかが変わってきます。
3-1. do-while文が向いている場面
do-while文は「最低1回は処理を実行したうえで、続けるかどうかを判定したい」場面で使われます。代表例は以下の通りです。
04 BREAK break文でループを途中終了する方法 条件を満たした瞬間にループを抜ける
break文は、ループの実行中に、その場でループ全体を強制終了させる命令です。while文・do-while文・for文のいずれでも使えます。「目的の値が見つかったら、それ以上探す必要はないので即座にやめる」といった処理でよく使われます。
#include <stdio.h>
int main(void) {
int scores[] = {65, 72, 58, 91, 84};
int i = 0;
int found = -1;
while (i < 5) {
if (scores[i] >= 90) {
found = i;
break; // 90点以上を見つけたら即座にループを抜ける
}
i++;
}
if (found != -1) {
printf("配列の%d番目(0から数えて)に90点以上のスコア(%d点)が見つかりました\n", found, scores[found]);
}
return 0;
}
実行結果
配列の3番目(0から数えて)に90点以上のスコア(91点)が見つかりました
📚 用語解説
配列:複数の値を1つの変数名でまとめて管理する仕組み。「scores[0]」「scores[1]」のように、番号(添字)で各要素にアクセスします。添字は0から始まるため、5個の要素があれば添字は0〜4になります。
このコードでは、配列scoresを先頭から順に確認し、90点以上のスコアが見つかった時点でbreak文が実行され、そこから先の要素は確認せずにループを抜けます。もしbreak文がなければ、90点以上が見つかった後も配列の最後まで無駄に確認を続けてしまいます。
目的の値が見つかったのにループを続けるのは無駄な処理です。break文を使うことで「これ以上探索する必要がない」という意図をコードで明確に表現でき、処理速度の面でも無駄な繰り返しを省けます。
05 CONTINUE continue文で特定の処理だけスキップする方法 ループは止めずに、今回の処理だけ飛ばす
continue文は、break文とよく混同されますが、意味は全く異なります。continue文は「今回の周回に残っている処理だけをスキップして、次の周回に進む」命令です。ループそのものは終了しません。
#include <stdio.h>
int main(void) {
int i = 0;
while (i < 10) {
i++;
if (i % 2 != 0) {
continue; // 奇数の場合はここでスキップして次のループへ
}
printf("%d は偶数です\n", i);
}
return 0;
}
実行結果
2 は偶数です 4 は偶数です 6 は偶数です 8 は偶数です 10 は偶数です
このコードは、1〜10の数値のうち奇数のときだけcontinue文でスキップし、偶数のときだけprintf文(画面に表示する命令)を実行しています。continue文が実行されても、iが10未満である限りループ自体は継続する点がbreak文との大きな違いです。
break文は「ループ全体を終了する」命令、continue文は「今回の周回だけスキップして次に進む」命令です。この2つを取り違えると、想定より早くループが終わったり、逆に想定より多くの処理が実行されたりするバグの原因になります。
5-1. breakとcontinueの違いを一言で
break文は「作業を打ち切って帰る」、continue文は「今回の作業だけ省略して、次の作業に進む」というイメージで覚えると区別しやすくなります。どちらも「ループの流れを途中で変える」命令ですが、ループ自体を終わらせるかどうかが最大の違いです。
06 LOGICAL OPERATORS 複数条件(&&・||・!)を組み合わせる書き方 1つの条件式で複数の判定を同時に行う
while文の条件式は、1つの比較だけでなく論理演算子を使って複数の条件を組み合わせることができます。C言語で使う代表的な論理演算子は以下の3つです。
📚 用語解説
論理演算子:複数の条件式を組み合わせるための記号。&&(AND)は両方ともtrueなら全体もtrue、||(OR)はどちらか一方でもtrueなら全体もtrue、!(NOT)は真偽を反転させます。
| 演算子 | 意味 | 例 | 説明 |
|---|---|---|---|
| && | AND(かつ) | a < 10 && b > 0 | aが10未満 かつ bが0より大きい場合にtrue |
| || | OR(または) | a < 10 || b > 0 | aが10未満 または bが0より大きい場合にtrue |
| ! | NOT(否定) | !(a < 10) | aが10未満でない場合にtrue(a >= 10と同じ意味) |
#include <stdio.h>
int main(void) {
int temperature = 28;
int humidity = 75;
while (temperature < 30 && humidity < 80) {
printf("快適な範囲です(気温%d℃, 湿度%d%%)\n", temperature, humidity);
temperature++;
humidity += 3;
}
printf("条件から外れたためループを終了しました\n");
return 0;
}
実行結果
快適な範囲です(気温28℃, 湿度75%) 快適な範囲です(気温29℃, 湿度78%) 条件から外れたためループを終了しました
このコードでは、気温が30℃未満 かつ 湿度が80%未満という2つの条件を&&でつないでいます。1回目(気温28℃・湿度75%)と2回目(気温29℃・湿度78%)はどちらの条件も満たすため処理が実行されますが、3回目には気温が30℃に達して条件が崩れるため、ループが終了します。
&&と||を同じ式の中で混在させると優先順位が分かりにくくなるため、「(a < 10 && b > 0) || c == 1」のように括弧で意図を明示すると、後で読み返したときに勘違いが起きにくくなります。
07 INFINITE LOOP while(1)による無限ループの作り方と終了条件 意図的に無限ループを作り、break文で安全に終了させる
C言語では、while(1)と書くことで意図的に無限ループを作れます。「1」は常にtrue扱いされる値のため、条件式が永遠にtrueとなり、明示的に止めない限りループが続きます。実務では、サーバーが常に通信を待ち受け続けるような処理などで使われます。
📚 用語解説
無限ループ:終了条件が成立せず、永遠に繰り返され続けるループのこと。while(1)のように意図的に作ることもあれば、条件式の変数を更新し忘れるなどのバグとして発生してしまうこともあります。
#include <stdio.h>
int main(void) {
int attempt = 0;
while (1) {
attempt++;
printf("%d回目の接続を試みています\n", attempt);
if (attempt >= 3) {
printf("3回試行したため処理を終了します\n");
break; // 条件を満たしたら無限ループを抜ける
}
}
return 0;
}
実行結果
1回目の接続を試みています 2回目の接続を試みています 3回目の接続を試みています 3回試行したため処理を終了します
このコードはwhile(1)で無限ループを作りつつ、attemptが3以上になった時点でbreak文を実行して、安全にループを抜けるという構成です。無限ループは「終了条件を書き忘れる」と危険ですが、break文とセットで使う分には安全に制御できる実用的なパターンです。
ループの中で条件式に使う変数を更新し忘れると、条件が永遠にtrueのままになり意図しない無限ループになります。特に「while (i < 5) { ... }」のようなwhile文でi++を書き忘れるミスは非常に多いので、while文を書いたら必ずループ内に「条件に近づく処理」があるかを確認しましょう。
本番環境で意図しない無限ループが発生すると、処理が固まってサーバーに負荷がかかり続ける、応答が返ってこなくなるといった事故につながります。開発中にプログラムが固まってしまった場合は、ターミナル(コマンドを入力する画面)でCtrlキー + Cキーを同時に押すことで、多くの場合は強制終了できます。
08 COMMON MISTAKES while文・do-while文でよくある間違い 初心者がつまずきやすい3つのポイントを先回りして押さえる
ここまで解説した内容を踏まえて、while文・do-while文でよく発生するミスを整理しておきます。事前に知っておくことで、実際にコードを書くときのつまずきを減らせます。
8-1. 変数の更新忘れによる無限ループ
最も多いミスが、ループ内で条件式に使う変数を更新し忘れることです。「while (i < 5) { 処理 }」のようにiを使った条件式を書いたら、ループの中でiを増やす(またはfalseに近づける)処理が必ず必要です。
8-2. do-while文の末尾セミコロン忘れ
do-while文だけは「while(条件式);」のように末尾にセミコロンが必須です。通常のwhile文にはセミコロンが不要なため、この違いを忘れて書き忘れるとコンパイルエラーになります。
8-3. break文とcontinue文の取り違え
ループを終了させたいのにcontinue文を書いてしまう、逆にスキップしたいだけなのにbreak文を書いてしまう、という取り違えもよくあるミスです。「ループ全体を終わらせたいのか、今回の周回だけ飛ばしたいのか」を書く前に一度整理する習慣をつけると防ぎやすくなります。
09 GENAI CASE STUDY 【独自データ】GENAI社内でみる「条件を満たすまで繰り返す」業務のリアル ループ処理の考え方は、実務の業務フローそのものにも当てはまる
while文の本質は「ある条件を満たす間、同じ処理を繰り返す」という発想です。実はこの発想、プログラミングの世界だけでなく日々の業務フローにもそのまま当てはまります。ここでは、弊社(株式会社GENAI)で実際にAIエージェントを活用している業務を、while文の考え方に重ねて紹介します。
| 項目 | 内容 |
|---|---|
| 契約プラン | Claude Max 20x(月$200 / 約30,000円) |
| 利用開始 | 2025年後半〜 |
| 利用部署 | 経営・営業・広告・開発・経理・秘書業務・個人業務まで全社 |
弊社では「条件を満たすまで繰り返す」タイプの業務を数多く抱えています。たとえば、請求書の内容が正しいか1件ずつ確認する経理業務、目標CPAを達成するまで広告の配信内容を調整し続ける広告運用などは、まさにwhile文的な発想の業務です。こうした業務をAI(Claude Code)に任せることで、以下のような削減効果が出ています(肌感ベース)。
| 業務領域 | 主な用途 | 概算削減時間 |
|---|---|---|
| 営業 | 提案書・見積・顧客別資料の自動生成 | 週20h → 週2h |
| 広告運用 | 週次レポート・CPA分析・配信内容調整 | 週10h → 週1h |
| ブログ記事 | SEO記事執筆・リライト・内部リンク最適化 | 1本8h → 1本1h |
| 経理 | 請求書チェック・経費仕訳・Freee連携 | 月40h → 月5h |
| 秘書業務 | 日報生成・議事録・スケジュール調整 | 日2h → 日15分 |
| 開発 | WordPress/HTML/LP制作、スクリプト書き捨て | 都度数時間削減 |
| 個人業務 | メール下書き、雑務タスク整理 | 日1h → 日10分 |
上記は弊社の肌感ベースの数値であり、業種・業態・担当者のスキルによって削減時間は変動します。あくまで「AIエージェントをどの程度まで業務に組み込めるか」の参考情報としてご覧ください。
特に経理の「請求書チェック・経費仕訳」は、「不備がなくなるまで、または全件確認が終わるまで繰り返し確認する」という、まさにループ処理そのものの業務です。この種の「条件を満たすまで同じ確認作業を繰り返す」業務は、コードで自動化しやすい典型例でもあります。
10 FOR NON-ENGINEERS 【独自】非エンジニアがループ構文を知っておく3つのメリット コードを書けなくても、この考え方を知っておく価値がある
「自分はエンジニアじゃないから、while文やdo-while文を勉強しても意味がないのでは」と感じる方もいるかもしれません。しかし弊社の経験では、経営者・管理職がループ処理の考え方を知っておくことには、コードを書く・書かないとは別の価値があります。
10-1. 【メリット1】業務のどこが自動化しやすいかが見えるようになる
「条件を満たすまで同じ処理を繰り返す」構造の業務は、ループ処理として自動化しやすい典型パターンです。while文の考え方を知っていると、日々の業務の中から「これはループ構造だから自動化候補になる」という当たりをつけられるようになります。
10-2. 【メリット2】AIエージェントが出してきたコードの意図を大まかに読める
Claude Codeのようなエージェント型AIにコードを書かせる時代でも、出てきたコードが「何をしようとしているか」を大まかに読めると、レビューの質が上がります。while文とfor文、break文とcontinue文の違いが分かるだけでも、「このループはいつ終わるのか」「想定通りの範囲だけ処理しているか」を確認できるようになります。
10-3. 【メリット3】エンジニアとの会話の解像度が上がる
「ここは無限ループになる可能性があります」「break条件が足りていません」といったエンジニアからの報告を、感覚だけでなく意味を理解した上で受け止められるようになります。専門用語を完全に使いこなす必要はありませんが、基本構文を知っておくだけでコミュニケーションの解像度は大きく変わります。
重要なのは「while文を1から書けるようになること」ではなく、「条件を満たすまで繰り返す、という考え方を理解しておくこと」です。実際の実装は、Claude Codeのようなエージェント型AIに任せる時代だからこそ、考え方の理解の方が価値を持ちます。
弊社では、社員がC言語やPythonの構文を1から習得することよりも、Claude Codeに業務を任せながら「今どんな処理が行われているか」を大まかに把握できる状態を目指しています。ターミナル操作やコードの完全な理解は不要で、チャット形式で指示を出すだけで、こうしたループ処理を含む業務の自動化を進められます。
11 QUICK REFERENCE while文 vs do-while文 早見表 違いを1枚で確認できる比較表
ここまでの内容を1枚の比較表にまとめました。while文とdo-while文、どちらを使うべきか迷ったときの判断材料にしてください。
| 項目 | while文 | do-while文 |
|---|---|---|
| 条件判定のタイミング | 処理の前に判定 | 処理の後に判定 |
| 条件が最初から偽の場合 | 一度も処理が実行されない | 必ず1回は処理が実行される |
| 向いている場面 | 条件を満たす間だけ繰り返したい一般的な処理 | 最低1回は実行してから判定したい処理(メニュー表示・入力チェックなど) |
| 構文の末尾 | { }の後にセミコロンは不要 | while(条件);の後にセミコロンが必須 |
| break文・continue文 | どちらも利用可能 | どちらも利用可能 |
迷ったときの基本方針はシンプルです。「最初の1回を無条件で実行する必要があるかどうか」だけを判断基準にすれば、while文とdo-while文のどちらを選ぶべきかは自然に決まります。
12 CONCLUSION まとめ ループ処理の考え方は、コードを書かない人にとっても武器になる
この記事では、C言語のwhile文・do-while文の基本構文から、break文・continue文による制御、複数条件の組み合わせ方、while(1)による無限ループの作り方まで整理しました。最後にポイントを振り返ります。
while文とdo-while文の違いは、C言語に限らずほぼすべてのプログラミング言語に共通する考え方です。「条件を満たす間繰り返す」という発想そのものは、業務の自動化を考えるうえでも役立つ視点です。「この業務は条件を満たすまで繰り返す構造になっているから、AIに任せやすいはずだ」という気づきが得られれば、この記事の目的は十分に果たされたと言えます。
while文の考え方が使える業務、洗い出してみませんか?
「条件を満たすまで確認・調整を繰り返している業務」は、実は社内に数多く眠っています。
弊社の実運用ノウハウをもとに、Claude Codeでどこまで自動化できるかを個別にご相談いただけます。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
よくある質問
Q. while文とfor文はどちらを使うべきですか?
A. 繰り返す回数があらかじめ決まっている場合はfor文、「ある条件を満たす間、繰り返す」というように回数が実行時までわからない場合はwhile文が向いています。たとえば配列を先頭から末尾まで舐める処理はfor文、ユーザーが正しい値を入力するまで確認し続ける処理はwhile文、というように使い分けるのが一般的です。どちらで書いても実現できる処理は多いですが、意図が伝わりやすいコードにするために使い分けを意識すると、後で見返したときに読みやすくなります。
Q. while文とdo-while文、どちらを使えばいいですか?
A. 「条件を満たさない場合は一度も処理を実行したくない」ならwhile文、「最低でも1回は処理を実行してから条件を確認したい」ならdo-while文を選びます。実務では、メニュー選択や入力チェックのように「まず1回試してから条件を確認する」場面でdo-while文が使われることが多く、それ以外の大半のケースはwhile文で十分カバーできます。迷った場合はwhile文を基本にして、最初の1回を無条件で実行する必要があるかだけを判断基準にすると選びやすくなります。
Q. 無限ループを作ってしまった場合、どうやって止めればいいですか?
A. プログラム実行中であれば、ターミナル(コマンドを入力する画面)上でCtrlキーとCキーを同時に押す「Ctrl+C」でほとんどの場合は強制終了できます。ただし本番の業務システムで無限ループが発生すると、処理が固まってサーバーに負荷がかかり続ける事故につながるため、ループの中に必ず終了条件(break文や、カウンタ変数を更新する処理)を入れておくことが重要です。想定外の無限ループに備えてタイムアウト処理を組み込んでおくと、被害を最小限に抑えられます。
Q. break文とcontinue文は何が違いますか?
A. break文は「ループそのものを即座に終了する」命令で、実行するとそのループの外側に処理が移ります。一方continue文は「今回の周回に残っている処理だけをスキップして、次の周回に進む」命令で、ループ自体は継続します。イメージとしては、break文は「作業を打ち切って帰る」、continue文は「今回の作業だけ省略して次の作業に進む」という違いです。この2つを混同すると、想定より早くループが終わったり、逆に想定より多く処理が実行されたりするバグにつながります。
Q. C言語のコードは非エンジニアの経営者でも読めるようになりますか?
A. while文やbreak文といった基本構文は、慣れれば非エンジニアの方でも「条件を満たす間繰り返す」「ここで抜ける」という程度の意味は読み取れるようになります。ただし、実務でコードを書くレベルまで習得するには相応の学習時間が必要です。弊社では、経営者・管理職の方が構文を1から学ぶのではなく、Claude CodeのようなAIエージェントに実装を任せつつ、今どんな処理が行われているかを大まかに把握できる程度の知識を持つことを推奨しています。
Q. whileループの中でi++(インクリメント)を忘れるとどうなりますか?
A. 条件式に使っている変数の値が更新されないため、条件が永遠にtrueのままになり、無限ループが発生します。たとえば「while (i < 5) { 処理 }」と書いてループ内でiを増やす処理を書き忘れると、iはずっと同じ値のままなので条件判定が永遠にtrueとなり、プログラムが固まってしまいます。この種のミスは非常に多いバグの原因なので、while文を書いたら「ループの中で終了条件に近づく処理があるか」を必ず確認する習慣をつけましょう。
Q. do-while文の末尾のセミコロンを忘れるとどうなりますか?
A. C言語ではdo-while文だけ「while(条件式);」のように末尾にセミコロンが必須で、これを忘れるとコンパイルエラーになります。通常のwhile文(do-while文ではない方)には末尾のセミコロンは不要なため混同しやすく、C言語初心者が最初につまずきやすいポイントの一つです。エラーメッセージに構文エラーや「;が必要」といった趣旨の表示が出た場合は、まずdo-while文の末尾を確認するとよいでしょう。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
AI鬼管理/AIBPO by AI鬼管理へのお問い合わせ
この記事を読んで気になった方へ。
専門スタッフが、御社に最適な
業務自動化・業務代行プランを無料でご提案します。




