ゾンビでもわかるC言語プログラミング

C言語入門者の応援をします

ループ文(for/while)

Index

1. ループ文とは

ループ文は、ある処理を繰り返し行いたいときに使います。
C言語のループ文には、for文とwhile文があり構文は以下になります。

for(変数の初期化; 条件式; 処理) {
  処理;
}
while(条件式) {
  処理;
}

while文は、for文の条件式のみバージョンみたいなものです。

2. 基本的なfor文

以下のコードを実行してみましょう。

#include <stdio.h>

int main() {
  int i;

  for(i=0; i<10; i++) {
    printf("%d回目\n", i);
  }

  return 0;
}

出力は以下になります。

0回目
1回目
2回目
3回目
4回目
5回目
6回目
7回目
8回目
9回目

for文は、条件式が真の間ループし続けます。 先ほどのコードの場合、以下のような処理をします。

for(
  i=0; // iに0を代入
  i<10; // iが10未満の間ループする
  i++; // 各ループが終わった後に iをインクリメントする
) {
  printf("%d回目\n", i); // iを出力する
}

また、for文の括弧の中は省略することもでき、以下のコードは先ほどのコードと同じ動作をします。

#include <stdio.h>

int main() {
  int i;
  i = 0;

  for(; i<10; ) {
    printf("%d回目\n", i);
    i++;
  }

  return 0;
}

また、この場合は以下のようにwhile文に置き換えることもできます。

#include <stdio.h>

int main() {
  int i;
  i = 0;

  while(i<10) {
    printf("%d回目\n", i);
    i++;
  }

  return 0;
}

3. break文

break文は、ループ文を途中で終わらせたいときに使います。
先ほどのコードは、breakを使用して、以下のように書き換えることができます。

 1  #include <stdio.h>
 2  
 3  int main() {
 4    int i;
 5    i = 0;
 6  
 7    while(1) {
 8      printf("%d回目\n", i);
 9      i++;
10      if(i==10) {
11        break;
12      }
13    }
14  
15    return 0;
16  }

ループ文は、条件式が真の間ループするので、7行目のように 1 を入れると、永遠にループします。
10行目でif文を使用しています。
ここでは、i が 10 だったら break を実行します。
なので、この出力は先ほどと同じで以下になります。

% ./a.out
0回目
1回目
2回目
3回目
4回目
5回目
6回目
7回目
8回目
9回目

4. continue文

continue文は、ループ文内のcontinue以下の処理をせずに、次のループへ進むという動作をします。
以下のコードを実行してみましょう。

#include <stdio.h>

int main() {
  int i;
  i = 0;

  for(i=0; i<10; i++) {
    printf("continue前 %d回目\n", i);

    continue;

    printf("continue後 %d回目\n", i);
  }

  return 0;
}

以下が出力結果になります。

continue前 0回目
continue前 1回目
continue前 2回目
continue前 3回目
continue前 4回目
continue前 5回目
continue前 6回目
continue前 7回目
continue前 8回目
continue前 9回目

continueの前にあるprintf関数は実行されますが、後にあるprintf関数は実行されません。

書籍

新・明解C言語 入門編 (明解シリーズ)

新・明解C言語 入門編 (明解シリーズ)

苦しんで覚えるC言語

苦しんで覚えるC言語

やさしいC 第5版 (「やさしい」シリーズ)

やさしいC 第5版 (「やさしい」シリーズ)

C実践プログラミング 第3版

C実践プログラミング 第3版