我想填充一个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
,我认为这与我的问题没有关系,代码编译得很好并得到了预期的结果
答案 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
。