这是C#中的一个简单的while循环,但它无限工作.
int count = 1;
while (count < 10)
{
count = count++;
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
Joh*_*hnD 58
表达式count++返回count的原始值,然后递增该值.
所以你每次都用相同的值覆盖计数.这样做:
count++;
Run Code Online (Sandbox Code Playgroud)
对于好奇,这里是Eric Lippert的文章的链接,它区分了运算符优先级和评估顺序 - 这是一个有趣的读物:
http://blogs.msdn.com/b/ericlippert/archive/2009/08/10/precedence-vs-order-redux.aspx
Nig*_*hil 35
这将无限循环.
递增变量有两种类型:
这里count++和++count 两者都不同,如果你已经使用++count 它将工作.
这count = count++意味着计数变量将加1,然后将较早的值1分配给计数变量本身,因此计数保持不变.
Hei*_*nzi 27
count = count++;并没有增加count一个.x++是后增量运算符,它意味着由表达式返回的值是旧的值.因此,在您的代码中,会发生以下情况:
int oldValue = count;
count = count + 1;
count = oldValue;
Run Code Online (Sandbox Code Playgroud)
你可能想写的是count++;(没有" count =").
有关这方面的更多详细信息,请参阅以下SO问题:
++运算符首先保存当前值然后递增,最后返回保存的值,因此count永远不会改变.
Eiter使用++操作员或进行任务.这些都是等价的:
count++;
count += 1;
count = count + 1;
Run Code Online (Sandbox Code Playgroud)
count = count++;
Run Code Online (Sandbox Code Playgroud)
这是一个后增量.它做了以下.
int temp = count;
count++;
count = temp;
Run Code Online (Sandbox Code Playgroud)
所以你不会增加数量.请改用以下内容:
while (count < 10)
{
++count;
}
Run Code Online (Sandbox Code Playgroud)