看看这个例子:
int i;
for (i=1;i.......
还有这个:
for (int i=1;i........
他们之间有什么区别?
Mic*_*yan 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