在 for 循环中查找 'i' 的值?
Finding value of 'i' in a for loop?
我在这里有这个问题:
What is i after the following for loop?
The given code is:
int y= 0;
for (int i= 0; i<10; ++i)
{
y+= i;
}
我的答案是 9,但评分者认为答案不正确。我什至打印了 'i' 结果是 9.
这样想。使用y+=i
就是不断地将y
的当前值加到i
的值上。因此,反过来,您得到的不是 i
的真实值,而是累积值。
这就是 y+=i
中实际发生的事情
1+2+3+4+5+6+7+8+9
此外,仅在循环后打印出 i
是无效的,因为在 for 循环之外,i
不再存在。
你可以这样做:
int y=0;
for(int i = 0; i<10;i++)
y=i;
System.out.println(y);
答案是循环后i未定义。不过,在最后一次迭代中它是 9。
i
的值将为 10。截至目前,如果您尝试在循环外打印 i
的值,则 i
未定义。
当 i
为 9 时,您继续循环,因为下一次迭代 i
变为 10 并且条件失败并导致循环中断。所以 i
的值是 10。请记住,++i
或 i++
的 stpe 语句与 w.r.t i
将出现的值没有区别。 step 语句总是在下一次迭代开始之前执行。
以下小改动将帮助您证明输出。
int i,y= 0;
for (i= 0; i<10; ++i)
{
y+= i;
}
printf("%d\n",i);
也就是说,如果您在循环中打印 i
的值,那么您将在输出中获得 i
的最大值 9。可能这就是您将答案归结为 9 所做的事情。
int y= 0;
for (int i= 0; i<10; ++i)
{
y+= i;
printf("%d\n",i);
}
我在这里有这个问题:
What is i after the following for loop? The given code is:
int y= 0;
for (int i= 0; i<10; ++i)
{
y+= i;
}
我的答案是 9,但评分者认为答案不正确。我什至打印了 'i' 结果是 9.
这样想。使用y+=i
就是不断地将y
的当前值加到i
的值上。因此,反过来,您得到的不是 i
的真实值,而是累积值。
这就是 y+=i
1+2+3+4+5+6+7+8+9
此外,仅在循环后打印出 i
是无效的,因为在 for 循环之外,i
不再存在。
你可以这样做:
int y=0;
for(int i = 0; i<10;i++)
y=i;
System.out.println(y);
答案是循环后i未定义。不过,在最后一次迭代中它是 9。
i
的值将为 10。截至目前,如果您尝试在循环外打印 i
的值,则 i
未定义。
当 i
为 9 时,您继续循环,因为下一次迭代 i
变为 10 并且条件失败并导致循环中断。所以 i
的值是 10。请记住,++i
或 i++
的 stpe 语句与 w.r.t i
将出现的值没有区别。 step 语句总是在下一次迭代开始之前执行。
以下小改动将帮助您证明输出。
int i,y= 0;
for (i= 0; i<10; ++i)
{
y+= i;
}
printf("%d\n",i);
也就是说,如果您在循环中打印 i
的值,那么您将在输出中获得 i
的最大值 9。可能这就是您将答案归结为 9 所做的事情。
int y= 0;
for (int i= 0; i<10; ++i)
{
y+= i;
printf("%d\n",i);
}