for循环条件中的循环执行,c ++

时间:2015-10-20 11:41:28

标签: c++ for-loop

我想填充一个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;}
  3. 我查了一下,除了warning: iteration 121u invokes undefined behavior,我认为这与我的问题没有关系,代码编译得很好并得到了预期的结果

    编辑:感谢所有注意到可读性问题的人,当然这是真的,但我想看看这两行是否有不同的解释,所以我在C中检查这两行是否装配它们看起来很相似

2 个答案:

答案 0 :(得分:1)

两条线的最终结果将是相同的。然而,第二个更好,因为第一个牺牲可读性而没有增益。

当人们阅读代码时,他们希望for循环符合您在第二行中编写的方式。如果我踩过代码并遇到第一行,我会停下来看看为什么一个空的for循环正在运行,然后我会意识到你正在设置使用逗号运算符的for循环中的变量。在阅读代码时打破流程,因此不推荐它。

答案 1 :(得分:1)

没有,结果会是一样的。 第一个构造使用逗号运算符;逗号运算符的左侧在右侧之前排序,因此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