我正在尝试for循环。我添加了一个if语句,一旦达到30就停止循环。
我已经看到i <= 10
将运行11次,因为循环在到达10时仍会运行。
如果if语句在达到10时将i
设置为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;
}
}
答案 0 :(得分: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
部分。