Objective c 重复使用变量名作为循环索引不会产生我预期的错误

Objective c 重复使用变量名作为循环索引不会产生我预期的错误,objective-c,for-loop,scope,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 somethin

是否允许在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中,我通常会因此而出错。

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

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

然后您当然会得到一个编译错误,因为您不能在同一块中定义两个同名的变量。

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

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

然后您当然会得到一个编译错误,因为您不能在同一块中定义两个同名的变量。

这应该可以。您显示的代码段中i的作用域仅限于每个for循环,因此没有冲突。如果您改为这样做:

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

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

那么您将有一个问题,因为您在同一范围内声明了两次i。

应该可以。您显示的代码段中i的作用域仅限于每个for循环,因此没有冲突。如果您改为这样做:

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

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

那你就有问题了,因为你在同一个范围内声明了两次i。

好的,太好了。我并没有事先声明我是谁,所以我的望远镜应该是好的。谢谢多凯:太完美了。我并没有事先声明我是谁,所以我的望远镜应该是好的。谢谢D这段代码在java中也很好..已经有一段时间了,但我记得在for循环中为迭代变量重用变量名时经常出错。我只是用一个示例.java文件和mac os上的javac测试了它,这里没有问题!这段代码在java中也非常好。已经有一段时间了,但我记得在for循环中为迭代变量重用变量名时经常出错。我只是在mac os上用一个示例.java文件和javac测试了它,这里没有问题!