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

本文关键字:循环 for 为什么 | 更新日期: 2023-09-27 18:25:50

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

我的代码打印出这个作为 for 循环的结果:0123四

Console.WriteLine(x);

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

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

这是因为for仍在第 5 次执行。
但它没有进入它,因为x<5正在被评估为false.
这就是为什么在大多数情况下,在for循环中定义的变量不会在它之后使用。

在最后一个循环中,x 等于 5,因为它被冰封但没有通过检查x<5。这就是为什么它最终打印 5 的原因。

我在MSDN上发现了一个类似的例子。我根据你的例子调整了解释。

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

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

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

循环

每次迭代递增 x,并且仅在未<5 时才中断。因此,要脱离循环,它在逻辑上必须是 5。

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