免责声明: 这不是真实示例。这只是这些语言如何工作的理论问题。
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 | +-----+-----+------+------+----+
Java和C#从左到右评估表达式,其副作用立即可见。
在C ++中,未指定子表达式的求值顺序,并且两次修改同一对象而没有插入顺序点的行为是未定义的行为。