对于循环条件内的循环执行,C++

for loop execution within the loop condition, c++

本文关键字:循环 执行 C++ 于循环 条件      更新时间:2023-10-16

我想用 121 个整数填充一个 int 数组,从 0 到 120。两者之间有什么区别:

  1. for(int i = 0; i < 122; arr[i] = i, i++){}
  2. 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循环本身中设置变量。在读取代码时中断流程,因此不建议这样做。