变量范围具有相同的变量名称?

时间:2012-02-13 17:20:37

标签: objective-c

(目标C代码)

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 个答案:

答案 0 :(得分:1)

因为您正在重新定义i,所以您将i设置为尚未设置的自身值。

简单地说明一下:

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

进入这个:

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

会给你相同的结果。这个问题与范围无关。