【发布时间】:2011-02-23 22:47:11
【问题描述】:
在这种情况下什么被认为是最佳实践?
for (i=0; i<array.length(); ++i)
或
for (i=array.length()-1; i>=0; --i)
假设我不想从某个方向迭代,而是在数组的裸露长度上进行迭代。另外,我不打算改变循环体中数组的大小。
那么,array.length() 会在编译期间保持不变吗?如果没有,那么第二种方法应该是要采用的方法..
【问题讨论】:
-
您弄错版本 2 的事实说明了一些问题。不是吗?
-
这也取决于语言。如果
i未签名,您将无法在向下计数版本中正确获取终止条件。 (即使i已签名,也已经错了。) -
不会 ++i 导致最后一次传球越界吗?
-
前/后增量在 for 循环中无关紧要,因为当流控制到达结束大括号时它会自行执行。 ++i 之间没有区别(带整数);和我++;在代码中单独一行。类和前/后增量和复制构造函数可能有所不同,所以要小心。
标签: for-loop compilation compile-time