为什么在检查条件之后而不是在整个循环之后,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;
答案 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)
如果有帮助,标记为答案