0
int main (int argc, const char * argv[]){

    @autoreleasepool {
        int x = 1;
        for (x = 1; x <= 10; x++)  {
            NSLog(@"%i",x); //the answer here is 10.
        }

        NSLog(@"Number %i",x); //the answer here is 11.
    }

    return 0;
}

所以我的问题是,为什么当我在 for 循环之外打印 'x' 时,它会将 1 添加到最初的 10 中?

提前致谢。

4

6 回答 6

4

一旦 x 大于 10,循环就会结束。因此,它会循环 10 次,加一,即 11,然后跳出循环。

于 2012-04-23T18:54:17.543 回答
2

不是,循环声明添加了它。

for (x = 1; x <= 10; x++) {
    // some code
}

就好像

x = 1;
while(x <= 10) {
    // some code
x++;
}

当 x = 11 时,循环停止。

于 2012-04-23T18:55:00.723 回答
2

你的循环等于

x = 1;
while(x <= 10)
{
    // log x
    x++;
}

如您所见,在最后一次迭代 (x = 10) 中,x 递增,然后循环中断。

于 2012-04-23T18:55:48.873 回答
1

因为“for”循环首先将变量x的值递增,然后与条件进行比较!

于 2012-04-23T18:55:07.590 回答
0

这是因为 step 子句x++在最后一次成功的循环迭代之后运行。这就是它知道停止的方式。

  1. x = 1,然后我们循环 10 次,每次递增。
  2. 你到达x = 10并且你的循环体最后一次运行。
  3. step 子句然后运行x++,现在x = 11
  4. 检查循环条件x <= 10,它现在为假并且循环退出。

如果x从未达到 11,您将永远不知道何时退出此循环。

于 2012-04-23T18:57:38.520 回答
0

循环从 1 到 10 迭代 10 次,当循环结束时 x 的值变为 11。

于 2012-04-23T18:57:57.740 回答