0

请告诉我这两个代码片段有什么区别:

int i = 0;
for(i; i < test; i++) {...}

for(int i = 0; i < test; i++) {...}

i这些初始化-increment 变量的方法之间有什么区别吗?它会影响什么吗?

4

4 回答 4

5

区别在于变量的作用域i

在第一个中,i在 for 循环之外可见,而在第二个中,则不是。

于 2012-12-17T15:19:00.290 回答
1

如果您可以在 for 循环范围之外使用 i 变量。万一你不能这样做。只能在 for 循环范围内使用。

于 2012-12-17T15:19:21.253 回答
1

在这两种情况下,变量都被定义一次(没有明显的性能或内存问题)。不同之处在于范围和代表性。在第一种情况下i将可用的for声明范围之外。

第一种情况很有用,例如,如果您想找到一个元素的特定索引(确实存在这种方法的更好替代方案),或者如果您想迭代直到满足某个条件,然后知道哪个您的循环是否停止在索引处。

于 2012-12-17T15:20:26.060 回答
0

第二个是惯用语。第一个不是,因此违反了最小惊讶原则

如果您需要在循环i之前或之后访问,请仅使用第二个。for但是,我在这段代码中看不到任何暗示是这种情况。

于 2012-12-17T15:18:32.127 回答