★★★★请教:关于for循环中定义的变量的作用域★★★★

2024年11月23日 07:59
有2个网友回答
网友(1):

在旧标准中:
for(int i=0; i {
...;
}
i的作用域可以在i定义之后,即跳出循环仍可以使用i;

但新标准c99把这个作用域限定到for循环之内了。

而一些编译器,比如vc,由于为了兼容旧的c/c++程序,仍然把i的作用域认定在i的定义之后都可见,所以会出现重复定义的情况,当然一般的编译器都是选项开关,可以按旧标准编译,也可以按新标准.

所以,可以不用理会,他报错你就改一下.最好不要使用for (int i = 0; i != n; ++i) ,定义在循环外.

网友(2):

你搞错了
void func()
{
int n=0;
for(int i=0; i<5; i++)
{
int j=0;
}
}
这里n和i的作用域是相同的,j才是for循环内部的变量,只有j只在for内部有效