
C言語入門|for 文の高度な書き方:初期化・条件・更新を使いこなす
for 文にだいぶ慣れてきたころ、
こんな疑問が出てきませんか?😊
「いつも同じ形でしか書けないの?」
「10回繰り返す以外のことってできる?」
実は for 文は、
初期化・条件・更新の3つを工夫するだけで、かなり自由な繰り返し
が書ける、とても柔軟な構文なんです ✨
ここでは、for 文の基本を一段階レベルアップさせて、
“ちょっと高度な for 文の書き方” を体験していきましょう。
for 文は3つの部品で動いている 🔧
まず大前提として、for 文は次の3つの要素で構成されています。
| 部分 | 役割 |
|---|---|
| 初期化処理 | 繰り返し開始前に1回だけ実行される。 |
| 繰り返し条件 | ループを続けるかどうかを判定する。 |
| 繰り返し時処理 | 1回のループが終わるごとに実行される。 |
基本形はこの形ですね。
for (①初期化処理; ②繰り返し条件; ③繰り返し時処理) {
処理
}この 3つの部品をどう書くか によって、
for 文の動きはガラッと変わります 👍
① ループ変数を1から始める
「0からじゃなくて、1から数えたい」
そんな場面、意外と多いですよね 😊
プロジェクト名:5-8-1 ソースファイル名: sample5-8-1.c
#include <stdio.h>
int main(void)
{
for (int i = 1; i <= 3; i++) {
printf("%d番目のステップです\n", i);
}
return 0;
}実行結果
1番目のステップです
2番目のステップです
3番目のステップです初期化処理を i = 1 にするだけで、
人間の感覚に近いカウント が実現できます。
② ループ変数を2ずつ増やす
「1つ飛ばしで処理したい」
「偶数だけ扱いたい」
そんなときは、繰り返し時処理を工夫します。
プロジェクト名:5-8-2 ソースファイル名: sample5-8-2.c
#include <stdio.h>
int main(void)
{
for (int i = 0; i < 10; i += 2) {
printf("現在の値:%d\n", i);
}
return 0;
}実行結果
現在の値:0
現在の値:2
現在の値:4
現在の値:6
現在の値:8i++ を i += 2 に変えただけで、
2ずつ進むループ になります。
③ カウントダウンする for 文 ⏬
for 文は、
増える方向だけでなく 減る方向 にも使えます。
プロジェクト名:5-8-3 ソースファイル名: sample5-8-3.c
#include <stdio.h>
int main(void)
{
for (int i = 3; i > 0; i--) {
printf("あと%d回です\n", i);
}
printf("スタート!\n");
return 0;
}実行結果
あと3回です
あと2回です
あと1回です
スタート!初期化・条件・更新をセットで考えると、
カウントダウンも自然に書けますね 😊
④ ループ変数を初期化しない書き方
for 文では、
初期化処理を省略 することもできます。
プロジェクト名:5-8-4 ソースファイル名: sample5-8-4.c
#include <stdio.h>
int main(void)
{
int i = 0;
for (; i < 3; i++) {
printf("外で宣言したi:%d\n", i);
}
return 0;
}この書き方は、
- ループ変数を for 文の外で使いたい。
- 初期値を別の処理で決めたい。
といった場面で使われます。
💡 セミコロンは必ず残す点に注意しましょう。
⑤ 更新処理を書かない for 文(注意!)
繰り返し時処理も、省略できます。
for (int i = 0; i < 3;) {
printf("手動で更新します\n");
i++;
}この場合、
更新はブロック内で自分で行う必要があります。
もし更新を忘れると…😱
- 条件がずっと真のまま
- 無限ループに突入
という事故が起こります。
for 文は while 文の進化形 ✨
ここまで見てきたように、
for 文は決して「決まった回数だけの構文」ではありません。
- 初期化をどうするか
- 条件をどう書くか
- 更新をどう行うか
この3つを自由に組み合わせることで、
かなり表現力の高い繰り返し処理 が書けるようになります。
まとめ 😊
- for 文は初期化・条件・更新の3点セット
- 数え方・進み方・方向を自在に変えられる
- 便利な分、無限ループには要注意
ここまで理解できれば、
for 文はもう「難しそうな構文」ではありません 👍
