一尘不染

C#的前后增量

c#

我对C#编译器如何处理前后递增和递减感到有些困惑。

当我编写以下代码时:

int x = 4;
x = x++ + ++x;

x之后将具有值10。我认为这是因为预增量设置x5,这使其5+5
求值为10。然后,后增量将更新x6,但是将不会使用此值,因为10它将分配给x

但是当我编写代码时:

int x = 4;
x = x-- - --x;

然后x将是2之后。谁能解释为什么会这样?


阅读 258

收藏
2020-05-19

共1个答案

一尘不染

x--将为4,但在的当前时刻将为3 --x,因此它将结束为2,那么您将拥有

x = 4 - 2

顺便说一句,你的第一种情况是 x = 4 + 6

这是一个小示例,它将打印出每个零件的值,也许这样您会更好地理解它:

static void Main(string[] args)
{
    int x = 4;
    Console.WriteLine("x++: {0}", x++); //after this statement x = 5
    Console.WriteLine("++x: {0}", ++x);

    int y = 4;
    Console.WriteLine("y--: {0}", y--); //after this statement y = 3
    Console.WriteLine("--y: {0}", --y);

    Console.ReadKey();
}

打印出来

x++: 4
++x: 6
y--: 4
--y: 2
2020-05-19