一尘不染

C,C ++,Java和C#之前和之后的增量运算符行为

java

免责声明: 这不是真实示例。这只是这些语言如何工作的理论问题。

C / C ++,C#和Java在后和前增量运算符之间到底有什么区别?

这就是我使用VC ++ 10,Java 1.6和C#4所获得的

int a = 2;
int b = a++ + a++;
int c = ++a + a++ + a++;

      +-----+------+------+----+
      |  C  | C++  | Java | C# |
+-----+-----+------+------+----+
| a   |  7  |  7   |   7  |  7 |
+-----+-----+------+------+----+
| b   |  4  |  4   |   5  | 5  |
+-----+-----+------+------+----+
| c   | 15  |  15  |  16  | 16 |
+-----+-----+------+------+----+

阅读 376

收藏
2020-03-08

共1个答案

一尘不染

Java和C#从左到右评估表达式,其副作用立即可见。

在C ++中,未指定子表达式的求值顺序,并且两次修改同一对象而没有插入顺序点的行为是未定义的行为。

2020-03-08