に対するステートメント (C++)

cond 式が FALSE となるまで ステートメントループ式を 繰り返し実行します。ステートメントのスコープ ベースの詳細については、範囲ベースの for ステートメント (C++)を参照してください。

for ( init-expression ; cond-expression ; loop-expression )
   statement 

解説

指定の回数だけ実行する必要のあるループの構築に for のステートメントを使用します。

for のステートメントは、次の表に示すように、3 人のオプション部分から構成されます。

ループの要素には

構文の名前

実装された場合

内容

式 init

for ステートメントの他の要素の前。init 式は 一度だけ実行されます。cond 式に移ります。

頻繁に使用されるループのインデックスを初期化します。この場合は式または申告 (C++) のみを含めることができます。

cond 式

最初のイテレーションを含む ステートメントの各イテレーションの実行前。ステートメントはcond 式が true に評価された場合にのみ実行されます (以外)。

整数型または整数型への変換を持つ別のクラス型に評価される式です。通常、ループの終了条件をテストするために使用します。

ループ式

ステートメントの各イテレーションの終了時にします。ループ式が 実行された後、cond 式が 評価されます。

通常、ループのインクリメントのインデックスに使用します。

次に例を示します。

// for_statement1.cpp
#include <stdio.h>
int main() {
int i;
for ( i = 0 ; i < 2 ; i++ ) 
   printf_s( "\n%d\n",i );
}

for の前のループは while の次のループと同じです:

// for_statement2.cpp
#include <stdio.h>
int main()
{
   int i = 0;
   while ( i < 2 )
      printf_s( "%d\n", i++ );
}

init 式式はループコンマ演算子で区切って複数のステートメントを記述できます。次に例を示します。

// for_statment3.cpp
#include <stdio.h>
int main()
{
   int i, j;
   for ( i = 5, j = 10 ; i + j < 20; i++, j++ )
      printf_s( "\n i + j = %d", (i + j) );
}

for のループ、ステートメント 内の 休憩返します。、または Goto (for ループの外側のラベル付きステートメントに) 実行すると終了します。for のループの 続行します。 のステートメントは、現在のイテレーションを終了します。

cond 式が 省略されている場合、true と見なされ、for ループ、ステートメント内の break、return、または goto なしでは終了しません。

for のステートメントを使用して無限ループを指定する便利な方法は次のとおりです:

for( ; ; )
{
    // Statements to be executed.
}

for のステートメントを 3 フィールドが初期化のためによく使用されますが、終了をテストし、インクリメントして、これらの使用に限定されません。たとえば、次のコードは、0 ~ 4.を出力します。この場合、ステートメントは null ステートメントです:

// for_statement4.cpp
#include <stdio.h>
int main()
{
    int i;
    for( i = 0; i < 5; printf_s("%d\n", i), i++)
        ;
}

ループおよび C++ の標準のサポート

C++ 標準では for のループの終了後 for のループ内で宣言された変数がスコープ外になることを通知します。次に例を示します。

for (int i = 0 ; i < 5 ; i++) {
   // do something
}
// i is now out of scope under /Za or /Zc:forScope

既定では、[/Ze]の下に、for のループで宣言した変数はスコープに for のループの外側のスコープが終了まで。

/Zc:forScope は、/Za を指定せずにループで宣言された変数の標準動作を有効にします。

次のように /Ze で再宣言の変数に for のループのスコープの相違点を使用することも可能です:

// for_statement5.cpp
int main(){
   int i = 0;   // hidden by var with same name declared in for loop
   for ( int i = 0 ; i < 3; i++ ) {}

   for ( int i = 0 ; i < 3; i++ ) {}
}

このより綿密にループが発生した後に、範囲の外になるように for のループで宣言した変数を必要とする for のループで宣言した変数の標準動作を模倣します。変数が for のループで宣言した場合、既に同じ名前のローカル変数がある場合でも、内部的にコンパイラの昇格 for のループの外側のスコープ内のローカル変数に渡します。

参照

関連項目

繰り返しステートメント (C++)

C++ のキーワード

間ステートメント (C++)

do-while ステートメント (C++)

範囲ベースの for ステートメント (C++)