在练习 c++ 代码时,我使用了在 for 循环中声明的变量。但它向我展示了一个错误
variable i was not declared in scope
我在Eclipse IDE中尝试了相同的循环,它向我展示了相同的循环
the symbol i was not resolved
.
示例代码如下所示:
#include<iostream>
using namespace std;
int main(){
for(int i=0;i<10;i++){
cout<<i;
}
for(i=10;i<20;i++){
cout<<i;
}
}
您必须为每个作用域声明变量:
#include<iostream>
using namespace std;
int main(){
for(int i=0;i<10;i++){
cout<<i;
}
for(int i=10;i<20;i++){
cout<<i;
}
}
在第一个循环之后,不再有i
。您可以尝试编译器所说的内容,并看到这将失败:
int main(){
for(int i=0;i<10;i++){
cout<<i;
}
cout<<i; // Error
}
i
仅在第一个for
循环的范围内定义,因此需要在第二个循环中重新声明。
早期Microsoft C++编译器有一个错误,其中i
泄漏到for
循环的范围以有效地生成
int i;
for (i = 0; i < 10; i++){
通过编写for(int i=0; i<10; i++) {...}
,您可以在for
循环作用域内声明int i
,并且它仅在for
循环内有效。
如果你想重用int i
那么你应该把它放在任何for
循环之外和之前:
#include<iostream>
using namespace std;
int main(){
int i = 0;
for(i=0; i<10; i++){
cout<<i;
}
for(i=10; i<20; i++){
cout<<i;
}
cout<<i; // <- fine, 20
}
或者,只需对每个for
循环重复声明,那么for
循环中的int i
是完全不同的变量。
#include<iostream>
using namespace std;
int main(){
for(int i=0; i<10; i++){
cout<<i;
}
for(int i=10; i<20; i++){
cout<<i;
}
//cout<<i; <- oops!!! error
}