2

我正在尝试一个 for 循环。我添加了一个 if 语句来在循环达到 30 时停止循环。我已经看到i <= 10它将运行 11 次,因为循环在达到 10 时仍会运行。

i如果有一个 if 语句在达到 10 时设置回 0,为什么下面的代码会运行 11 次(第一个打印行) ?它不应该只打印 10 个星号而不是 11 个 - 因为它永远不会到达第 11 个循环?此外,第二个if设置i回 10,这应该让循环再运行一次,通过第一个if,然后将i返回设置为 0?

int j = 0;
for (int i = 0; i <= 10; i++)
{  
    Console.Write("*");
    if (i == 10)
    {
        j++;
        Console.WriteLine("");
        i = 0;
     }
     if (j == 30)
     {
         i = 10;
     }
 }
4

1 回答 1

3

在第一个循环中,这条线有 11 颗星,因为i从 0 迭代到 10,总共 11 次迭代。

每当i变为值 10 时,j递增,打印一个换行符,并i变为0.

但是,当i设置为0循环内时,循环会i从 1 迭代到 10 次,总共迭代 10 次。

这是因为i在下一次迭代开始之前递增。

具有这种结构的for循环:

for (INIT; CONDITION; INCREMENT) {
    BODY
}

或多或少等同于这个while循环:

INIT
while (CONDITION) {
    BODY
    INCREMENT
}

需要注意的是,当 BODY 有一个continue语句时,它实际上会跳到该INCREMENT部分。

于 2013-08-20T04:12:49.097 回答