在旧标准中:
for(int i=0; i
...;
}
i的作用域可以在i定义之后,即跳出循环仍可以使用i;
但新标准c99把这个作用域限定到for循环之内了。
而一些编译器,比如vc,由于为了兼容旧的c/c++程序,仍然把i的作用域认定在i的定义之后都可见,所以会出现重复定义的情况,当然一般的编译器都是选项开关,可以按旧标准编译,也可以按新标准.
所以,可以不用理会,他报错你就改一下.最好不要使用for (int i = 0; i != n; ++i) ,定义在循环外.
你搞错了
void func()
{
int n=0;
for(int i=0; i<5; i++)
{
int j=0;
}
}
这里n和i的作用域是相同的,j才是for循环内部的变量,只有j只在for内部有效