C言語では、同じ処理を何度も繰り返したい場面がよくあります。
例えば:
- 配列の要素を順番に処理する
- 1〜100までの数値を表示する
- 条件を満たすまで処理を繰り返す
こういったときに使うのが for文 です。
for文とは
for文とは、繰り返し処理を行うための制御構文です。
「何回繰り返すか」が決まっている処理に特に向いています。
基本構文
for (int i = 0; i < 5; i++) {
printf("%d\n", i);
}実行の流れ(ざっくり理解)
for文は以下の順番で処理されます。
- 初期化(最初に1回だけ)
- 条件式を評価
- trueなら処理を実行
- 更新式を実行
- 条件式に戻る
C言語文法解説シリーズ
本記事は「C言語文法解説シリーズ」の1つです。
C言語の文法を、組み込み開発の視点も交えて解説しています。
C言語文法解説シリーズ一覧はこちら

⭐ 1ループごとの動き(ここが重要)
初心者さんfor文って、なんで回数通り動くの?



条件で止まってるから…ですか?



そう。条件がfalseになった瞬間に終わるから、回数が決まるんだ



なるほど!1回ずつの動きを見ると分かりやすいですね!
初心者が一番つまずくのはここです。
1回ごとに何が起きているのかを見てみましょう。
for (int i = 0; i < 3; i++) {
printf("%d\n", i);
}1回目
- 初期化:i = 0
- 条件:0 < 3 → true
- 実行:0を出力
- 更新:i++ → i = 1
2回目
- 条件:1 < 3 → true
- 実行:1を出力
- 更新:i++ → i = 2
3回目
- 条件:2 < 3 → true
- 実行:2を出力
- 更新:i++ → i = 3
4回目(ここがポイント)
- 条件:3 < 3 → false
→ ここで終了
💡 なぜ「3回」実行されるのか
- 条件が falseになった瞬間に終了
- 更新(i++)は 処理のあとに行われる
👉 だから「0,1,2の3回」になる
🧠 イメージで理解する
i=0 → 実行
i=1 → 実行
i=2 → 実行
i=3 → 終了
👉 「条件を満たしている間だけ繰り返す」と覚えるとOK
よく使うパターン
① カウントアップ
for (int i = 0; i < 10; i++)→ 0〜9
② カウントダウン
for (int i = 10; i > 0; i--)→ 10〜1
③ 配列処理
int arr[3] = {10, 20, 30};
for (int i = 0; i < 3; i++) {
printf("%d\n", arr[i]);
}④無限ループ
for (;;) {
// 無限ループ
}組み込み開発ではよく使われます。
(メインループなど)
⚠️ よくある勘違い
この2つの違い
for (int i = 0; i < 3; i++)for (int i = 1; i <= 3; i++)👉 どちらも3回だが、中身が違う
| 書き方 | 出力 |
|---|---|
| i < 3 | 0,1,2 |
| i <= 3 | 1,2,3 |
breakとcontinueの違い
for文では、ループの途中で処理を変えたいことがあります。
そのときに使うのが break と continue です。
break(ループを完全に終了)
for (int i = 0; i < 10; i++) {
if (i == 5)
break;
printf("%d\n", i);
}実行結果
0
1
2
3
4👉 iが5になった瞬間にループ自体が終了します
continue(その回だけスキップ)
for (int i = 0; i < 5; i++) {
if (i == 2)
continue;
printf("%d\n", i);
}実行結果
0
1
3
4👉 i=2のときだけ処理を飛ばして、次のループへ進む
ここで使用しているif文についてはこちらの記事で解説しています。


💡 breakとcontinueの違いまとめ
| break | continue | |
|---|---|---|
| 動き | ループ終了 | 次のループへ |
| よく使う場面 | 条件を満たしたら終了 | 特定条件だけスキップ |
🧠 よくあるつまずきポイント
初心者はよくこう思います👇



continueって途中で終わるの?
→ ❌違います
→ ループは続くが、その回だけ処理しない
breakとcontinueの違いの詳細はこちらの記事で解説しています。


🔥 while文との違い
for文とwhile文はどちらもループですが、
使いどころが違います
for文
for (int i = 0; i < 3; i++) {
printf("%d\n", i);
}while文
int i = 0;
while (i < 3) {
printf("%d\n", i);
i++;
}while文についてはこちらの記事で解説しています。


💡 実は同じことができる
👉 for文はこう書き換えられる
int i = 0;
while (i < 3) {
printf("%d\n", i);
i++;
}🎯 違いは「書き方」ではなく「用途」
| 観点 | for文 | while文 |
|---|---|---|
| 向いている処理 | 回数が決まっている | 条件で繰り返す |
| 可読性 | 高い(まとまってる) | 状況次第 |
| 実務での使い方 | 配列・ループ処理 | 状態監視・待ち |
goto文でもループ処理は可能ですが、現在はあまり使われません。


🧠 具体的なforとwhileの使い分け
for文を使う場面
- 配列を順番に処理する
- 決まった回数だけ繰り返す
👉 「何回やるか」が明確
while文を使う場面
- ボタンが押されるまで待つ
- センサー値が変わるまでループ
- 通信待ち
👉 「いつ終わるか」が不明
⚡ 組み込み目線の重要ポイント
while (1) {
// メインループ
}👉 無限ループで状態を監視する
💥 よくあるミス
whileで更新を忘れる
int i = 0;
while (i < 3) {
printf("%d\n", i);
// i++ を忘れる
}👉 無限ループになる
forなら防げる
for (int i = 0; i < 3; i++)👉 更新忘れが起きにくい
まとめ
- for文は繰り返し処理の基本
- 初期化・条件・更新を1行で書ける
- 1ループごとの動きを理解すると一気に分かる
- 回数が決まっている処理に向いている
この記事が参考になった方へ
制御構文を含むC言語の基本文法をこちらの記事で整理しています。


技術に関するご相談・開発・自動化ツール作成・記事執筆などのご依頼も承っています。
小さなご相談からでもお気軽にご連絡ください。









コメント