在练习C ++代码时,我使用了在for循环中声明的变量。我希望它在另一个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;
}
}
答案 0 :(得分:4)
您必须为每个作用域声明变量:
#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
}
答案 1 :(得分:4)
i
仅在第一个for
循环的作用域内定义,因此需要在第二个循环中重新声明。
早期的Microsoft C ++编译器存在一个错误,其中i
泄漏到for
循环的范围内以有效地产生
int i;
for (i = 0; i < 10; i++){
答案 2 :(得分:3)
通过编写for(int i=0; i<10; i++) {...}
,您可以在int i
循环范围内声明for
,并且仅在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
循环中重复声明,然后int i
循环中的for
就是完全不同的变量。
#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
}