C#While(i ++ ...)何时递增?

时间:2018-03-12 15:31:04

标签: c# loops while-loop post-increment

为什么在检查条件之后而不是在整个循环之后,While循环后递增(或后递减)变量?

如:

int x = 0;
while (x++ < 5)
Console.WriteLine(x);

输出为:1 2 3 4 5,当我相信它应该是0 1 2 3 4.它似乎立即检查条件 - 真实 - inrements。这是正常的行为吗,因为我最近一直在练习普通话C并且它完全不同。

我是否应该更加明确地使用此选项?

while (x < 5)
Console.WriteLine(x);
++x; 

5 个答案:

答案 0 :(得分:7)

如果您使用for循环,您的预期答案将是正确的: 虽然没有任何特殊的内部运作方式。

for (x = 0; x < 5; x++)

是最清晰地写这个的方法。

答案 1 :(得分:2)

如果执行相同的代码,行为是正确的,ANSI-C也会以相同的方式执行此操作 x++是“一个命令”,一旦你继续执行下一个命令,增量就已经完成了。 x++++x之间的区别在于,后者返回“新值”,第一个返回“旧值”。
以下是您想要的:

int x = 0;
do
{
    Console.WriteLine(x++);
}
while (x < 5);

但我也认为一般来说,“做5次”的具体情况最好通过@ikdekker建议的for循环来解决。

答案 2 :(得分:2)

你的循环相当于:

int x = 0;
while (x < 5)
{
  x++;
  Console.WriteLine(x);
}

由于增量将在条件线(x <5)之后立即完成。

所以你的第二个循环是正确的(你应该添加大括号),或者如果你真的想要条件和增量同时你可以使用do..while循环:

int x = 0;
do
{
  Console.WriteLine(x);
} while (++x < 5);

答案 3 :(得分:0)

如前所述,您可以使用for循环。您也可以在for循环中声明x变量。

for (var x = 0; x < 5; x++)
{
    Console.WriteLine(x);
}

答案 4 :(得分:0)

您在错误的地方使用x++

Console.WriteLine(x++)

而不是

while(x++ < 5)
如果有帮助,

标记为答案