Что такое «переменная« i »не была объявлена ​​в области видимости» в c ++? - PullRequest
0 голосов
/ 11 января 2019

Практикуя код на С ++, я использовал переменную, которая была объявлена ​​в цикле 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;
        }
    }

Ответы [ 3 ]

0 голосов
/ 11 января 2019

Написав 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
}
0 голосов
/ 11 января 2019

i определено только в области действия первого цикла for, поэтому его необходимо повторно объявить во втором цикле.

Ранние компиляторы Microsoft C ++ имели ошибку, из-за которой i просочился в область действия цикла for для эффективного производства

int i;
for (i = 0; i < 10; i++){
0 голосов
/ 11 января 2019

Вы должны объявить переменную для каждой области:

#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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...