第五章 for


for
while のときと同じように、繰り返し処理をおこないます。使い方は、
for ( 初期値 ; 繰り返しの条件 ; 繰り返しのたびにおこなう処理 ) { 繰り返したい処理 }
となります。

while のときと同様に、{ } 内の繰り返したい処理が一行のときは { } を省略できます。
次のプログラムでは { } を省略してないのですが、省略することも可能です。

<for>
#include<stdio.h>
main()
{
    int x;
    for(x=0;x<4;x++)          /* x++ は x=x+1 の意味) */
    {
        printf("%d\n",3-x);   /* 繰り返したい処理 */
    }
    printf("終了\n");
}
<実行結果>
3
2
1
0
終了

for のところは次のような意味です。

   x は 0 から始めて、x<4 という条件を満たす間、{ } 内の処理を繰り返しなさい。
   そして、繰り返しのたびに x=x+1 しなさい。

プログラムを詳しくみてみると、次のようになります。
x は 0 であり、条件(x<4)を満たすので、{ } 内の処理を実行します。
{ } 内にある printf により、3-x した値、つまり 3 が %d のところに代入され表示されます。
そして、x は x=x+1 されるので、x は 1 となってもう一度 for へ戻ります。

今度も、x は 1 であり、条件(x<4)を満たすので、{ } 内の処理を実行します。
{ } 内にある printf により、3-x した値、つまり 2 が %d のところに代入され表示されます。
そして、x は x=x+1 されるので、x は 2 となってもう一度 for へ戻ります。

上記のような処理を繰り返すと、最後には…

x は 3 であり、条件(x<4)を満たすので、{ } 内の処理を実行します。
{ } 内にある printf により、3-x した値、つまり 0 が %d のところに代入され表示されます。
そして、x は x=x+1 されるので、x は 4 となってもう一度 for へ戻ります。

x は 4 であり、条件(x<4)を満たさないので、{ } 内の処理を実行しなくなります。

そして、一番最後にある printf("終了\n"); が実行されプログラムが終了します。

最後に、printf 内に式を書いているのですが、その計算結果と、
画面に表示させる記号(%d のようなやつ)が対応していれば問題ありません。                              


インクレメント演算子(++)とデクレメント演算子(--)                                                                        
プログラム中に x++ という表記の仕方がでてきましたが、他にも次のような表記方法があります。

   x++    x=x+1 の意味        x--    x=x-1 の意味
   ++x    x=x+1 の意味        --x    x=x-1 の意味
   x+=2    x=x+2 の意味        x-=2    x=x-2 の意味
   x*=2    x=x*2 の意味        x/=2    x=x/2 の意味

x++ と ++x ,x-- と --x は同じように見えますが、実際は異なります。
次のプログラムを見てください。

<x++ と ++x>
#include<stdio.h>
main()
{
    int a,b,x,y;
    x=y=1;         /* x と y に 1 を代入 */
    a=x++;
    b=++y;
    printf("a=%d x=%d\n",a,x);
    printf("b=%d y=%d\n",b,y);
}
<実行結果>
a=1 x=2
b=2 y=2

このように、x++ の方は a に代入してから x=x+1 となり、
++y の方は b に代入する前に y=y+1 となります。

x++ と ++x のどちらを使うかは、<x++ と ++x>のように何かに代入するときは注意が必要ですが、
<for>のように、単独で使う場合にはどちらでも関係ありません。

つまり、a=x++ のようなときは注意が必要で、
for で使われているような x++ だけのときはどちらでもいいのです。

<前に戻る  |目次|  次へ進む>