我可以更改循环的起始条件吗?
can i change starting condition in for loop?
我在我的代码
中有一个 for (int i=max_position; i<N; ++i) { ... }
但是,在循环中,我要更新max_position
的值,这会影响我的前面吗?
来自N4296的c 14标准(尽管C 和C的每个版本都具有等效的措辞)。
for语句
for ( for-init-statement condition(opt); expression(opt)) statement
等于
{ for-init-statement while ( condition ) { statement expression ; } }
除了在for-init statement中声明的名称在同一 声明区域如所宣布的 条件,除了语句中的
continue
(未包含在另一个迭代语句中) 在重新评估条件之前执行表达式。[注意:因此,第一个语句指定了初始化 循环;条件(6.4)指定了每次迭代之前进行的测试,以使循环在 条件变成了错误;该表达式通常指定每次迭代后完成的增量。 - 终注]
您可以看到,一旦您进行了初始化的i
,修改用于初始化它的表达式中使用的变量将没有效果。(这是标准实际上非常清晰的地方之一。)
no,初始化 int i = max_position
将仅执行一次;如果要 altim 循环,请尝试反向 it:
for (int i = N - 1; i >= max_position; --i) {
...
}
在此向后循环中i >= max_position
条件将在每次迭代中检查。
不,它不会,因为您说的是i = max位置,而for循环使用i变量而不是max_position变量
不。for
循环中的第一个语句仅执行一次。
设置了i
后,更改用于设置i
的变量的值不影响i
。
您可以在for
循环主体内明确更改i
的值。
no,因为int i
在使用max_position
运行之前初始化了一次,因此max_position
对循环不再影响。
更改i而不是启动条件,更改max_position不会影响:
for(i = max_position;i<N;i++){
if(smthHappened)
i+=3;
}
相关文章:
- 如何在for循环中包含两个索引值的测试条件
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 循环中的条件:为什么每次都调用strlen(),而vector.size()只调用一次
- 即使没有满足他们的条件,我也无法通过一些 do-while 循环
- 在循环条件 i<sqrtN(预先计算)和 i*i<N 中,C++哪个更有效?
- 尽管条件为真,循环仍停止
- 为什么我不能在 for 循环中出现这样的条件?(C++)
- C++ 即使不满足条件,循环也会终止
- 具有迭代器和自定义步长的循环结束条件
- 有没有办法在循环中的条件至少满足一次时运行语句?
- 为什么循环没有中断,并且 if 条件没有按预期工作?
- 为什么我不能将 size() 函数编写为 while 循环中的条件?
- 虽然循环即使应用了错误条件也不会退出
- 当循环在条件C++之前停止工作时
- Leetcode C++用于循环条件
- 当满足条件时,While循环未结束
- 对于检查 >=0 终止条件时的循环索引类型
- 调用以条件循环(c++)
- 使用布尔条件c++循环时无法退出
- 在条件C++循环语句中向SQLite3表中插入条目