C++ 中的" Variable ' i ' was not declared in scope "是什么?



在练习 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
}

最新更新