for ステートメント

for ステートメント を使用すると、 以下のことを行うことができます。

for ステートメントの形式は、次のとおりです。

>>-for---------------------------------------------------------->
 
>--(--+-------------+--;--+-------------+--;--+-------------+--)-->
      '-expression1-'     '-expression2-'     '-expression3-'
 
>--statement---------------------------------------------------><
 
 

expression1
初期化式 です。 これは、ステートメント が始めて処理される前においてのみ評価されます。 この式を使用すると、変数を初期化することができます。 ステートメントの最初の反復の前に式の評価を行いたくない場合には、この式を省略することができます。

expression2
条件式 です。 ステートメント の各反復の前に評価されます。

C これは、 算術型またはポインター型に評価されなければなりません。

評価が false (または C では 0) であった場合、そのステートメントは処理されず、制御は for ステートメントの次のステートメントに移ります。 expression2 の評価が false でない場合、ステートメントは処理されます。 expression2 を省略すると、この式が true によって置き換えられたのと同様になり、この条件の不備により for ステートメントが終了しないことになります。

expression3
ステートメント が反復された後で、毎回この式を評価します。 この式は、変数に対する増分、減分、または代入のために頻繁に使用されます。 この式はオプションです。

breakreturn、または goto 文があると、2 番目の式の評価が false でない場合でも、for ステートメントを終了できます。 expression2 を省略する場合、breakreturn、または goto 文を使用して、for ステートメントを終了する必要があります。

expression1 を使用すると、変数を初期化するだけでなく、その変数を 宣言することもできます。 この式で、またはステートメント の中のどこででも、変数を宣言すると、 その変数は、for ループの終わりでスコープの外に出ます。

C++ for ステートメントのスコープ内で宣言された変数が for ステートメントに対してローカルでないスコープを持つよう にするためのコンパイラー・オプションを設定することができます。

for ステートメントの例

次の for ステートメントは、count の値を 20 回印刷します。 for ステートメントは、count の値を 1 に初期設定します。 ステートメントが反復されるたびに count が増やされます。

int count;
for (count = 1; count <= 20; count++)
   printf("count = %d¥n", count);

次の一連のステートメントも同じタスクを実行します。for ステートメントの 代わりに while ステートメントを使用していることに注意してください。

int count = 1;
while (count <= 20)
{
   printf("count = %d¥n", count);
   count++;
}

以下の for ステートメントには、初期化の式が含まれていません。

for (; index > 10; --index)
{
   list[index] = var1 + var2;
   printf("list[%d] = %d¥n", index,
   list[index]);
}

以下の for ステートメントは、 scanfe と いう文字を受け取るまで実行し続けます。

for (;;)
{
   scanf("%c", &letter);
   if (letter == '¥n')
      continue;
   if (letter == 'e')
      break;
   printf("You entered the letter %c¥n", letter);
}

以下の for ステートメントには、複数の初期化と増分が含まれています。 コンマ演算子によってこの構造が可能となります。 for 式内の最初のコンマは、宣言の区切り子です。 これは、ij の 2 つの整数を宣言して、初期化します。 2 番目のコンマ (コンマ演算子) によって、 ループ内の各ステップを通るたびに、ij を両方とも増加することが可能になります。

for (int i = 0,
j = 50; i < 10; ++i, j += 50)
{
   cout << "i = " << i << "and j = " << j
   << endl;
}

以下の例は、ネストされた for ステートメントを示しています。このステートメント は、[5][3] という次元の配列の値を印刷します。

for (row = 0; row < 5; row++)
   for (column = 0; column < 3; column++)
      printf("%d¥n",
      table[row][column]);

row の値が 5 より小さい間、外部ステートメントが処理されます。 外部の for ステートメントが実行されるたびに、 内部の for ステートメントが column の初期値をゼロに設定します。 そして、内部の for ステートメントのステートメントが 3 回実行されます。 column の値が 3 より小さい間は、内部ステートメントが実行されます。

関連参照

IBM Copyright 2003