【问题标题】:C# While (i++ ...) when increments?C# While (i++ ...) 何时递增?
【发布时间】:2018-08-20 16:37:53
【问题描述】:
为什么 While 循环在检查条件之后而不是在整个循环之后立即对变量进行后递增(或后递减)?
如:
int x = 0;
while (x++ < 5)
Console.WriteLine(x);
输出是:1 2 3 4 5,当我认为它应该是 0 1 2 3 4 时。它似乎立即检查了条件 - 真 - 信息。这是正常的行为吗,因为我最近一直在练习纯 C 并且完全不同。
为了更清楚,我应该选择这个选项吗?
while (x < 5)
Console.WriteLine(x);
++x;
【问题讨论】:
标签:
c#
loops
while-loop
post-increment
【解决方案1】:
如果您使用 for 循环,您的预期答案将是正确的:
while 没有任何特殊的内部运作方式。
for (x = 0; x < 5; x++)
这是最清晰的写法。
【解决方案2】:
如果您执行相同的代码,行为是正确的,并且 ANSI-C 会以相同的方式执行此操作。
x++ 是“一个命令”,并且在您进入下一个命令。
x++ 和++x 的区别在于,后者返回“新值”,而第一个返回“旧值”。
愿以下是你想要的:
int x = 0;
do
{
Console.WriteLine(x++);
}
while (x < 5);
但我也认为,一般来说,这种“做 5 次”的具体情况最好用 @ikdekker 建议的 for-loop 来解决。
【解决方案3】:
你的循环相当于:
int x = 0;
while (x < 5)
{
x++;
Console.WriteLine(x);
}
因为增量将在条件行 (x
所以你的第二个循环是正确的(你应该添加大括号),或者如果你真的想要同时增加条件和增量,你可以使用 do..while 循环:
int x = 0;
do
{
Console.WriteLine(x);
} while (++x < 5);
【解决方案4】:
如前所述,您可以为此使用 for 循环。您也可以在 for 循环中声明 x 变量。
for (var x = 0; x < 5; x++)
{
Console.WriteLine(x);
}
【解决方案5】:
你在错误的地方使用了x++
Console.WriteLine(x++)
而不是
while(x++ < 5)
如果有帮助就标记为答案