我在这里有这个问题:
以下for循环后我是什么? 给定的代码是:
int y= 0;
for (int i= 0; i<10; ++i)
{
y+= i;
}
我认为答案是9,但根据评分者的说法,这是不正确的。我甚至打印过&#39;我&#39;它出现了9。
答案 0 :(得分:2)
答案是循环后我未定义。但是,在最后一次迭代中它是9。
答案 1 :(得分:1)
这样想。使用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);
答案 2 :(得分:1)
i
的值为10.截至目前,如果您尝试在循环外打印i
的值,则i
未定义。
当i
为9时,你继续循环,因为下一次迭代i
变为10并且条件失败并导致打破循环。因此,i
的值为10.请记住,++i
或i++
的stpe语句与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);
}