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;
}
このプログラムは九九表を表示します。%2d の 2 は、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() をスキップします。