重用变量名作为循环索引不会产生我期望的错误

时间:2012-05-14 15:26:07

标签: objective-c for-loop scope

我是否可以在Objective-C中的不同for循环中重复使用相同的变量名?例如:

// This doesn't give me an error but I feel like it should:

for(int i = 0; i < 10; i++){
    //do something
}

for (int i = 0; i < 5; i++){    // I'm using "i" again.  Is this allowed?
    //do something else
}

这编译并且似乎运行良好,但我只是想确保这是合法的并且允许在我的程序中不会引起某种复杂化。我对ObjC很新,但在Java中,我通常会从中获得错误。

2 个答案:

答案 0 :(得分:3)

那应该没问题。您显示的代码段中i的范围仅限于每个for循环,因此没有冲突。如果你改为这样做:

int i;
for (i = 0; i < 2; i++) {
    //...
}

int i;
for (i = 5; i < 10; i++) {
    //...
}

然后你会遇到问题,因为你在同一范围内宣布i两次。

答案 1 :(得分:2)

这很好。因为您没有初始化for循环之外的整数。如果你有两次这样的话:

int i;
for (i = 0; ...)

那么你当然会得到编译错误,因为你不能在同一个块中定义两个具有相同名称的变量。