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");
} |
<実行結果>
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);
} |
<実行結果>
このように、x++ の方は a に代入してから x=x+1 となり、
++y の方は b に代入する前に y=y+1 となります。
x++ と ++x のどちらを使うかは、<x++ と ++x>のように何かに代入するときは注意が必要ですが、
<for>のように、単独で使う場合にはどちらでも関係ありません。
つまり、a=x++ のようなときは注意が必要で、
for で使われているような x++ だけのときはどちらでもいいのです。 |
|