对于循环条件内的循环执行,C++
for loop execution within the loop condition, c++
我想用 121 个整数填充一个 int 数组,从 0 到 120。两者之间有什么区别:
-
for(int i = 0; i < 122; arr[i] = i, i++){}
和 -
for(int i = 0; i < 122; i++){arr[i] = i;}
?
检查了它,除了我认为与我的问题无关的warning: iteration 121u invokes undefined behavior
,代码编译良好并获得了预期的结果
编辑:感谢所有注意到可读性问题的人,当然是这样,但我的意思是看看这 2 行是否有不同的解释,所以我在 C 中检查了这两行到汇编,它们看起来相同
None,结果将是一样的。第一个构造使用逗号运算符;逗号运算符的左侧先于右侧排序,因此arr[i] = i, i++
定义明确
不过,第二个更容易阅读,特别是如果选择完全省略{}
:
for(int i = 0; i < 122; arr[i] = i, i++); //this ; is evil, don't write such code.
另外,如果要填充 120 个元素,则应使用 i < 120
.
两条线的最终结果将是相同的。但是,第二个更好,因为第一个牺牲了可读性而没有收获。
当人们通读代码时,他们希望循环for
与您在第二行中编写的方式相同。如果我正在单步执行代码并遇到第一行,我会停下来一秒钟看看为什么运行空for
循环,然后会意识到您正在使用逗号运算符在for
循环本身中设置变量。在读取代码时中断流程,因此不建议这样做。
相关文章:
- 在映射擦除c++期间执行循环的次数
- C++-For循环未执行
- 如何强制循环执行另一次迭代到零并关闭循环
- 程序在循环执行后崩溃
- 如何使用两个 for 循环执行唯一的洗牌
- 对于循环执行失败,因为变量我不会递增,为什么?
- pi的倍数到千分之一的值可能会改变循环执行方式
- For 循环执行奇怪的增量跳转
- 在循环执行之间释放内存
- 如何计算循环执行了多少次?C++
- 给定范围内的完美平方:循环执行异常
- 需要澄清有关此循环执行乘法的信息
- 有条件的大平面数组遍历和令人惊讶的短循环执行时间
- c++openmp,用于循环执行期间的循环最大减少值
- 为什么循环执行时间的此C++存在显着差异?
- 对于循环条件内的循环执行,C++
- 使用for循环执行线程
- c++中While循环执行得太早
- c++中while循环执行中的打印输出语句
- 这个 while 循环执行其适当的功能,但对于其他内容是必需的