Область переменных с тем же именем переменной? - PullRequest
3 голосов
/ 13 февраля 2012

(код цели С)

int i=5;
{
    int i=i;
    NSLog(@"Inside Scope: %i",i);
}
NSLog(@"Outside Scope: %i",i);

Печать:

3385904 (мусор)

5


замена int i = i; на int i= 10; печать правильно ... (Внутри i)

Например:

10

5

И (только этот код)

int i=i;

Компилируется, но сразу же происходит ошибка.


Как действует любой из этих синтаксисов? Что они используют или это ошибки компилятора, которые должны были быть обнаружены ранее?

Есть ли ситуации, когда необходимо использовать те же имена переменных внутри новой области видимости под новым типом, и как бы вы их различали?

Мои единственные мысли могут быть for() loop, так как компилятор будет расстроен, вы переопределяете int i; дважды, если у вас есть два цикла.

1 Ответ

1 голос
/ 13 февраля 2012

Поскольку вы переопределяете i, вы устанавливаете для i значение, которое еще не было установлено для себя.

Просто превращаете это:

int i=5;
{
    int i=i;
}

в следующее:

int i = i;
//int i=5;
//{
    //int i=i;
//}

даст вам такие же разнообразные результаты.Эта проблема не имеет ничего общего с областью действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...