找到' i'的价值在for循环中?

时间:2015-07-15 22:57:27

标签: java for-loop pre-increment

我在这里有这个问题:

  

以下for循环后我是什么?   给定的代码是:

 int y= 0; 
for (int i= 0; i<10; ++i) 
{  
  y+= i; 
}

我认为答案是9,但根据评分者的说法,这是不正确的。我甚至打印过&#39;我&#39;它出现了9。

3 个答案:

答案 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.请记住,++ii++的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);
 }