while
文 次は「繰り返し文」(Iteration Statement)を見ましょう。繰り返し文には while
文,do
文,そして for
文があります。ここでは,while
文を見ます。
■while
文(while
Statement)
while (式) 文
条件式 はスカラ型に限る。
while
文は,条件式 が真のとき,文 を実行します。if
文でも確認したように,条件式 が真とは 式 が 0
でないときとなります。文 とは,複合文,空文を含む式文,if
文などの「文」です。
/* Example 14.5 */ #include <stdio.h> int main(void) { int sum = 0, x[6] = {0}, *p = x; printf("Input integers: "); scanf("%d%d%d%d%d", x, x + 1, x + 2, x + 3, x + 4); while(*p) sum += *p++; printf("sum = %d\n", sum); return 0; }
これは,配列 x[6]
に5つの数字を格納し,その和を求めるものです。scanf
では5つの数字を読み込むので,x[5] = *(x + 5)
は必ず 0
となります。while
文は *p
が真のとき式文 sum += *p++;
を実行します。x + 5
までポインタ p
が増加すると,繰り返し処理から抜けます。次は実行例です。(太字部分が入力箇所です。)
% ./a.out Input integers: 1 2 3 4 5 6 7 8 9 10 sum = 15
5までの和となります。