はじめに
for文やwhile文を学ぶと、次に出てくるのが「二重ループ」です。
でも初心者の頃は、
- ループの中にループ?
- どっちが先に動くの?
- なぜそんなことをするの?
と混乱しやすいポイントでもあります。
初心者さんfor文の中にfor文を書くんですか?



そう。最初は難しく見えるけど、“縦と横を処理する”って考えると分かりやすいよ



縦と横…?



表とかマス目をイメージすると理解しやすいんだ
実は二重ループは、
- 表形式データ
- 二次元配列
- 座標処理
- 全探索アルゴリズム
など、C言語では非常によく使われる重要な考え方です。
この記事では、C言語の二重ループ(ネストループ)の仕組みを、図や実行順序を使いながら初心者向けにわかりやすく解説します。
C言語文法解説シリーズ
C言語の文法や制御構文についてまとめたシリーズです。
C言語文法解説シリーズ一覧はこちら


二重ループとは?
二重ループとは、ループの中に、さらにループを書く処理です。
例えば以下のコードです。
#include <stdio.h>
int main(void) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("i=%d j=%d\n", i, j);
}
}
return 0;
}このように、外側のfor文の中に、さらにfor文を書いています。
これを「二重ループ」や「ネストループ(入れ子ループ)」と呼びます。
for文の基本が不安な方は、先に通常のfor文の記事を読むのがおすすめです。
「for文とは?」の記事はこちら


二重ループの実行順序
初心者が最も混乱しやすいのがここです。
重要なのは、外側ループが1回進むたびに、
内側ループが全部実行されるという点です。
実際の動きを順番に見るとこうなります。
i=0
j=0
j=1
j=2
j=3
i=1
j=0
j=1
j=2
j=3
i=2
j=0
j=1
j=2
j=3
つまり、
- i が1回増えるたびに
- j が最初から最後まで全部回る
という動きになります。
なぜ二重ループを使うの?
二重ループは「縦と横」を扱う処理でよく使われます。
① 表形式データを扱う
例えば以下のような表です。
○ ○ ○
○ ○ ○
○ ○ ○
これは、
- 行(縦)
- 列(横)
を持っています。
二重ループは、この「行と列」を処理するために使われます。
② 二次元配列を扱う
C言語には二次元配列があります。
int array[3][4];これは、
- 3行
- 4列
の配列です。
このような配列を処理するとき、二重ループが非常によく使われます。
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 4; col++) {
printf("%d\n", array[row][col]);
}
}二次元配列については、別記事でも詳しく解説しています。
👉 「二次元配列とは?」の記事も合わせて読むと理解が深まります。


③ 全組み合わせを調べる
例えば、
- 全員と全員を比較する
- すべての組み合わせを確認する
といった処理でも二重ループを使います。
AとB
AとC
AとD
BとC
BとD
アルゴリズムや探索処理でもよく登場します。
実際に「*」を表示してみる
二重ループは、図形表示をすると理解しやすくなります。
#include <stdio.h>
int main(void) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
printf("*");
}
printf("\n");
}
return 0;
}実行結果:
*****
*****
*****
なぜこう表示されるの?
ポイントは役割の違いです。
内側ループ
for (int j = 0; j < 5; j++)これは横方向です。
*****
を作っています。
外側ループ
for (int i = 0; i < 3; i++)これは縦方向です。
*****
*****
*****
の「行数」を増やしています。
二重ループは「行と列」で考える
二重ループは、
- 外側 = 行(row)
- 内側 = 列(col)
で考えると理解しやすくなります。
row → 縦方向
col → 横方向
この考え方は、
- 二次元配列
- 画像処理
- ゲーム座標
- 行列演算
など、今後もずっと使います。
二重ループで混乱しやすいポイント
① どっちが先に動く?
内側ループが最後まで回ってから、外側ループが1回進みます。
ここを逆に考えると混乱しやすいです。
② 改行位置を間違えやすい
例えばこのコード。
printf("\n");を内側ループに入れると、
*
*
*
*
*
のように縦表示になります。
改行位置で結果が大きく変わります。
③ 無限ループになりやすい
条件式を書き間違えると、二重ループは非常に止まりにくくなります。
例えば、
j++を書くべき場所を間違えるケースなどです。
二重ループは実務でもよく使う
実務でも二重ループは非常によく登場します。
例えば:
- 画面描画
- センサーマップ処理
- テーブル検索
- 行列データ
- CSVデータ処理
- ゲームマップ
などです。
特に組み込み開発では、「複数データを規則的に処理する」
場面が多いため、二重ループはかなり頻繁に使います。
まとめ
二重ループとは、ループの中に、さらにループを書く処理です。
ポイントは以下です。
- 外側1回につき、内側が全部回る
- 行と列で考えると理解しやすい
- 二次元配列や表形式データでよく使う
- 実務でも非常によく登場する
最初は混乱しやすいですが、
- 「横方向」
- 「縦方向」
を意識すると、一気に理解しやすくなります。
この記事が参考になった方へ
制御構文を含むC言語の基本文法をこちらの記事で整理しています。


エンジニアとして技術を学ぶことは重要ですが、
キャリアや副業についても同時に考える必要があります。
副業の現実や市場価値、今後のキャリア戦略については、
こちらの記事でまとめています。


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









コメント