一尘不染

前缀(++ x)和后缀(x ++)操作如何工作?

c#

有人可以告诉我前缀/后缀运算符是如何工作的吗?我一直在网上寻找很多东西,但是什么也没找到。

据我所知,prefex首先递增,然后进行操作,然后分配。
Postfix将首先执行该操作,然后分配并递增。

但是我的代码有点麻烦:

int x, y;
x = 1;
y = x + x++; // (After operation y = 2)(x=2)

但是,当我这样做时:

y = x++ + x; // (After operation y = 3)(x=2)

我不确定为什么这些操作会有所不同。我有两个问题:

  • 你能解释一下区别吗?

  • 这如何适用于其他运算符前缀?


阅读 469

收藏
2020-05-19

共1个答案

一尘不染

  • 在C#中,操作数按+从左到右的顺序进行评估。
  • 在C和C ++中,+未指定的操作数的求值顺序。

对于C#,您的示例工作如下:

 y = x + x++;
     ^ x is 1
         ^ x is increased to 2, but the postfix increment returns the old value (1)
 y = 2

 y = x++ + x;
     ^ x becomes 2, but postfix increment returns the old value (1)
           ^ x is now 2 here
 y = 3
2020-05-19