我能改变for循环的起始条件吗?

bbv*_*van 2 c++ for-loop

我的代码中有这个

for (int i=max_position; i<N; ++i) { ... }

但是,在循环内部我要更新它的值max_position,这会影响我的for循环吗?

Mar*_*ica 5

n4296开始,这是C++ 14标准草案(尽管每个版本的C++和C都有相同的措辞).

for语句

 for ( for-init-statement condition(opt); expression(opt)) statement
Run Code Online (Sandbox Code Playgroud)

相当于

 {
     for-init-statement
     while ( condition ) {
         statement
         expression ;
     }
 }
Run Code Online (Sandbox Code Playgroud)

除了在for-init-statement中声明的名称与条件中声明的名称在同一声明区域中,并且continuein 语句(未包含在另一个迭代语句中)将在重新评估条件之前执行表达式.[注意:因此第一个语句指定循环的初始化; 条件(6.4)指定在每次迭代之前进行的测试,以便在条件变为假时退出循环; 表达式通常指定在每次迭代后执行的递增. - 结束说明]

如您所见,一旦初始化i,修改用于初始化它的表达式中使用的变量将不起作用.(这是标准实际上非常清楚的地方之一.)