C言語 | フロー制御 | while文

while 文は条件が真である間、指定した処理を繰り返します。

ループを作る

反復処理はプログラム制御の基本です。while 文は条件が偽になるまで文を繰り返します。

while (条件式) 

通常はループ内でカウンタ変数を更新し、最終的に条件が偽になるようにします。

コード1

#include <stdio.h>

int main() {
  int iCount;
  printf("繰り返し回数を入力してください。 >");
  scanf("%d", &iCount);

  while (iCount > 0) {
    printf("カウンタ = %d\n", iCount);
    iCount--;
  }
  return 0;
}

このループは iCount が0より大きい間繰り返し、各反復の後でカウンタを減らします。

意図的に作った無限ループを含め、ループから直ちに抜けるには break を使います。

コード2

#include <stdio.h>

int main() {
  int iCount = 0;
  while (1) {
    if (iCount == 1000) break;
    printf("iCount = %d\n", iCount++);
  }
  return 0;
}

後置インクリメント演算子は、現在の値を printf() に渡した後で iCount を増加させます。同じ処理は次のように2行でも書けます。

printf("iCount = %d\n", iCount);
iCount++;

ループは入れ子にもできます。2次元データを処理するときによく使われます。

コード3

#include <stdio.h>

int main() {
  int iOp1 = 1, iOp2 = 1;

  while (iOp1 < 10) {
    while (iOp2 < 10) {
      printf("%2d ", iOp1 * iOp2);
      iOp2++;
    }
    printf("\n");
    iOp2 = 1;
    iOp1++;
  }
  return 0;
}

このプログラムは九九表を表示します。%2d2 は、2文字分の最小フィールド幅を指定します。

ループの先頭へ戻る

現在の反復の残りをスキップし、条件式を再評価するには continue を使います。

コード4

#include <stdio.h>

int main() {
  int iCount = 0;

  while (iCount++ < 100) {
    if (iCount % 2) continue;
    printf("%d ", iCount);
  }
  return 0;
}

このプログラムは偶数だけを表示します。iCount % 2 が0でなければ奇数なので、continue によって printf() をスキップします。