2015-10-20 50 views
0

我想填补与121个的整数int数组,从0到120之间有什么区别:用于循环条件内循环执行,C++

  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组件和它们看起来相同

+0

你可以把ARR声明? –

+0

可读性和可维护性是编程的一个重要方面。你认为哪一个更容易阅读和理解(因此更容易维护)? –

回答

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

1

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

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