C#:为什么x的最终值与for循环外的值不同?

时间:2015-12-05 16:05:47

标签: c#

static void Main(string[] args)
{
    double x;
    for (x = 0; x < 5; x++)
    {
        Console.WriteLine(x);
    }
    Console.WriteLine(x);
}

我的代码打印出来的是for循环的结果: 0 1 2 3 4

Console.WriteLine(x);
在循环外部的

打印值5.为什么在循环外将x递增1?

4 个答案:

答案 0 :(得分:5)

这是因为for仍在第5次执行。
但由于x<5正在评估false,因此无法输入。{
这就是为什么在大多数情况下,在for循环中定义的变量不会在它之后使用。

答案 1 :(得分:2)

在最后一个周期中,x等于5,因为它是有效的,但没有通过检查x<5。这就是它最终打印5的原因。

我找到了类似的example on MSDN。我根据你的例子修改了解释。

  
      
  1. 首先,建立变量i的初始值。无论循环重复多少次,此步骤仅发生一次。您   可以认为这种初始化是在循环之外发生的   过程
  2.   
  3. 要评估条件i < 5,请将i的值与5进行比较。

         
        
    • 如果i小于5,则条件的计算结果为true,   发生以下操作:正文中的Console.WriteLine语句   循环显示i的值。 i的值递增   按1循环返回到步骤2的开头以评估   条件再次。

    •   
    • 如果i大于或等于5,则为条件   计算结果为false,然后退出循环。

    •   
  4.   

答案 2 :(得分:1)

循环在每次迭代时递增x,并且仅在不是&lt;因此,要打破循环,它必须在逻辑上为5。

答案 3 :(得分:0)

最后,该值已经增加到5。并且没有在循环外进行任何进一步的检查