在 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。请记住,++ii++ 的 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);
 }