C++ 对于循环条件内的循环执行,c++;
我想用121个整数填充一个整数数组,从0到120。以下两者之间的区别是什么:C++ 对于循环条件内的循环执行,c++;,c++,for-loop,C++,For Loop,我想用121个整数填充一个整数数组,从0到120。以下两者之间的区别是什么: for(inti=0;i
for(inti=0;i<122;arr[i]=i,i++){}
警告:迭代121u调用了未定义的行为
,我认为这与我的问题无关,代码编译得很好,得到了预期的结果
编辑:感谢所有注意到可读性问题的人,这当然是真的,但我想看看这两行是否有不同的解释,所以我在C to assembly中检查了这两行,它们看起来相同这两行的最终结果将是相同的。但是,第二种方法更好,因为第一种方法牺牲了可读性而没有任何好处
当人们通读代码时,他们希望
循环与您在第二行中编写的方式相同。如果我单步执行代码并遇到第一行,我会停下来看一下为什么运行空的for
循环,然后会意识到您正在使用逗号运算符设置for
循环本身中的变量。读取代码时中断流,因此不推荐使用。无,结果将相同。
第一个构造使用逗号运算符;逗号运算符的左侧在右侧之前排序,因此arr[i]=i,i++
定义良好
但是,第二个更容易阅读,特别是如果选择完全省略{}
:
for(int i = 0; i < 122; arr[i] = i, i++); //this ; is evil, don't write such code.
for(inti=0;i<122;arr[i]=i,i++)//这是邪恶的,不要写这样的代码。
另外,如果你想填充120个元素,你应该使用i<120
你能把arr声明放进去吗?可读性和可维护性是编程的一个重要方面。你认为哪一个更容易阅读和理解(因此更容易维护)?