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までの和となります。