While loops
whileループはforループに似ていますが、機能は少なくなっています。whileループは、while内の条件が真である限り、whileブロックの実行を継続します。例えば、次のコードはちょうど10回実行されます。
int n = 0;
while (n < 10) {
n++;
}
常に true (ゼロ以外) と評価される条件が指定されている場合、while ループは無限に実行することもできます。
while (1) {
/* do something */
}
ループ命令文
C言語には、あらゆるループタイプで併用される重要なループ命令文が2つあります。それはbreak 命令文とcontinue 命令文です。
下の「break」命令文は、whileループが終了しない場合でも、ループを10回実行した後に停止します。
int n = 0;
while (1) {
n++;
if (n == 10) {
break;
}
}
次のコードでは、continue 命令文によって printf コマンドがスキップされ、偶数のみが出力されます。
int n = 0;
while (n < 10) {
n++;
/* nが奇数であることを確認する */
if (n % 2 == 1) {
/* whileブロックの先頭に戻る */
continue;
}
/* nが偶数の場合にのみこのコードに到達する */
printf("The number %d is even.\n", n);
}
Exercise
array 変数は 10 個の数値のシーケンスで構成されています。while ループ内に 2 つの if 条件を記述する必要があります。
これらの条件は、ループの流れを以下のように変更します(printf コマンドは変更しません)。
- 現在出力しようとしている数値が 5 未満の場合、出力しません。
- 現在出力しようとしている数値が 10 より大きい場合、出力せずにループを停止します。
反復変数 i を進めずに continue 導関数を使用しないと、無限ループに陥ることに注意してください。