循环中和循环之前变量声明的区别是什么?

the*_*mer 3 variables loops

看看这个例子:

int i;
for (i=1;i.......
Run Code Online (Sandbox Code Playgroud)

还有这个:

for (int i=1;i........
Run Code Online (Sandbox Code Playgroud)

他们之间有什么区别?

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
Run Code Online (Sandbox Code Playgroud)

相比之下:

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
Run Code Online (Sandbox Code Playgroud)