对语句(C++)

重复 执行语句循环表达式,直到 cond 表达式 变为 false。 有关语句基于范围的信息,请参见 基于范围的 for 语句 (C++)

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

备注

使用 for 语句构造必须执行指定的次数的循环。

如下表所示,for 语句包含三个可选部分。

对于循环元素

语法名称

当执行

内容

init 表达式

for 语句之前的其他元素。 init 表达式 只执行一次。 控件随后传递给 cond 表达式

常用初始化循环索引。 它可以包含表达式或声明 (仅限 C++)。

cond-expression

语句的每次迭代之前执行,包括第一个迭代。 语句 中执行,只有 + 当 cond 表达式 计算结果为 true (非零)。

计算为整型或选件类类型对于整型的明确转换的表达式。 通常用于测试停止循环条件。

loop-expression

语句的每次迭代结束时。 在 循环表达式 执行后,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 停止循环,当 中断返回导航 (对一个 labeled 语句在 for 循环之外) 时在 语句 中执行。 在 for 循环的一个 继续 语句终止只打印当前迭代。

如果 cond 表达式 省略,则将其视为 true,并且 for 循环不会停止不 break、return或 goto 在 语句中

一种简便方式指定无限循环使用 for 语句为:

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

虽然 for 语句的三个字段用于初始化通常使用,测试的停止并提高,它们不限于这些用法。 例如,下面的代码将输出第 0 至 4。 在这种情况下,语句 为空语句:

// 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 启用 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++)