共用方式為


for 陳述式 (C++)

執行陳述式迴圈運算式 直到 cond 運算式 重複變成 false。如需陳述式範圍架構的詳細資訊,請參閱 以範圍為基礎的 for 陳述式 (C++)

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

備註

使用 for 陳述式建構必須執行指定次數的迴圈。

如下表所示, for 陳述式包含三個選擇性部分,。

for 迴圈項目

語法名稱

當執行

內容

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 迴圈會終止,在 中斷傳回執行 (對標記的陳述式在迴圈外) 在 陳述式內 執行。在 for 迴圈的 繼續 陳述式結束只有目前的反覆項目。

如果 cond 省略 expression,則為 true,而且迴圈不會終止沒有 break、 return或 goto 在 陳述式內

是一種方便指定無限迴圈中使用 for 陳述式是:

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

雖然 for 陳述式的三個欄位為初始化通常使用,以測試結束並增加,它們不限於這些用途。例如,下列程式碼會列印第 0 到 4。在這個案例中, 陳述式 是這個 null 陳述式:

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

for 迴圈和 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 可在 for 迴圈中所宣告的變數標準行為,而不需要指定 /Za。

使用 for 迴圈中檢視差異到重新宣告變數在 /Ze 下也可以如下所示:

// 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 + + 關鍵字

while 陳述式 (C++)

do-while 陳述式 (C++)

以範圍為基礎的 for 陳述式 (C++)