不可预知的语言行为i ++

时间:2012-12-03 10:33:08

标签: c# .net post-increment pre-increment

我尝试了以下

i=0;
if (i++ % Max_Col_items == 0 && i !=0)
{

}

并发现它在中间增加i

i % Max_Col_items == 0;
i=i+1;
i !=0;

当我尽管它会在最后增加i

i % Max_Col_items == 0;
i !=0;
i=i+1;

任何人都可以找到i++在C#中如何运作的解释吗?

3 个答案:

答案 0 :(得分:3)

i++将为您提供原始值,而不是递增值。您将在i的下一次使用时看到更改。如果要获得递增的值,请使用++i

请参阅Eric Lippert on the same issue

的详细答案

答案 1 :(得分:0)

i++会立即递增i的值,但会计算为递增前的值。

在代码行结束之前,它不会保持i的值不变,这似乎是您所期望的。

答案 2 :(得分:0)

那是因为(正如你正确指出的那样)

i%Max_Col_items == 0;

本身就是一项操作。一旦该操作线结束(值为i),就完成增量。