(Objective C код)Область переменной с тем же именем переменной?
int i=5;
{
int i=i;
NSLog(@"Inside Scope: %i",i);
}
NSLog(@"Outside Scope: %i",i);
Печать:
3385904 (Garbage)
замещающие int i = i;
с int i= 10;
печатает правильно ... (Внутри прицела i
)
Такие, как:
А (Только в этом код)
int i=i;
компилируется, но сразу же ошибку сегментации.
Как действуют эти синтаксисы? Какое использование они, или они являются ошибками компилятора, которые должны были быть обнаружены ранее?
Есть ли ситуации, когда необходимо использовать одни и те же имена переменных внутри новой области под новым типом и как бы вы дифференцировали?
Мое единственное, что может быть, это for() loop
, так как компилятор будет расстроен, вы повторно определяете int i;
дважды, если у вас есть две петли.
Я не уверен, что спецификация говорит о 'int i = i;', но явно недействительна. Однако определение нового 'i' внутри' {} 'совершенно законно, и иногда полезно (хотя и потенциально запутанное и подверженное ошибкам). –
Я хочу, чтобы вы могли установить (или действительно, что это было по умолчанию), чтобы компилятор вывел ошибку, когда вы используете одно и то же имя переменной в двух областях в том же методе. Я никогда не хочу этого делать. Возможно, есть такой флаг ... Ой, угадайте, это вопрос. –