看看这个例子:
int i;
for (i=1;i.......
和此:
for (int i=1;i........
它们之间有什么区别?
答案 0 :(得分:10)
第一个在循环外的范围内声明变量;循环结束后,变量仍然存在并可用。第二个声明变量,使其属于循环的范围;在循环之后,变量不再存在,防止变量被无意/错误地使用。
在C99,C ++,Java和其他类似语言中,您会发现大多数第二种语法,因为它更安全 - 循环索引属于循环,不会在其他地方修改/共享。但是,你会在较旧的C代码中看到很多前者,因为ANSI C不允许在循环中声明循环变量。
举个例子:
int i;
// ... lots of stuff
for ( i = 0; i < 5; i++ ){
printf("%d\n",i); // can access i; prints value of i
}
printf("%d\n",i); // can access i; prints 5
相比之下:
for (int i = 0; i < 5; i++ ){
std::cout << i << std::endl; // can access i; prints value of i
}
std::cout << i << std::endl; // compiler error... i not in this scope
答案 1 :(得分:2)
这取决于你没有指定的语言: - )
在C(和其他一些)中,变量的范围(在这种情况下实际上是持续时间)是不同的。在第一个中,变量存在于循环之后,因为它在它之外声明。
在后者中,当循环结束时它会消失,因为它的存在是在循环体的“内部”。