请告诉我这两段代码的区别是什么:
int i = 0;
for(i; i < test; i++) {...}
和
for(int i = 0; i < test; i++) {...}
这些初始化i
- 增量变量的方法之间有什么区别吗?它会影响到什么吗?
答案 0 :(得分:5)
差异是变量i
的范围。
在第一个中,i
在for循环之外是可见的,而在第二个循环中,它不是。
答案 1 :(得分:1)
如果是一个你可以在for循环范围的外侧使用i变量。 万一你不能这样做。只能用于for循环范围。
答案 2 :(得分:1)
在这两种情况下,变量都被定义一次(没有重大的性能或内存问题)。差异在于范围和表现。在第一个案例i
将在for
语句的范围之外可用。
第一种情况很有用,例如,如果你想找到一个元素的特定索引(很难找到更好的替代方法),或者你想迭代直到满足某个条件,然后,知道你的循环停在哪个索引。
答案 3 :(得分:0)
The second one is idiomatic。第一个不是,因此违反了the principle of least astonishment。
如果您需要在i
循环之前或之后访问for
,请仅使用第二个。但是,我在这段代码中看不到任何暗示是这种情况。