【发布时间】:2015-08-15 10:23:06
【问题描述】:
我认为基本算术运算符在大多数语言中具有相同的优先级。但是对于下面的代码sn-p-
int a = 5;
a = --a + a++;
//print a
C 编译器 (GNU GCC) 给我的结果是 9,而在 java 中我得到 8。这是怎么回事?
在我看来应该是 8 ( 4 + 4 )
【问题讨论】:
-
这是未定义的行为是 C。在同一执行行中更改变量不止一次。
-
运算符的优先级可能相同。这并不意味着操作数按任何特定顺序进行计算。
-
更多垃圾。从好的方面来说,我们已经有一段时间没有这种特殊的污水流出了。请停止写这样的废话并将其发布在 SO 上以便“解释”。如果您的教授/助教写了废话,请告诉他们停止。
-
Java 强制从左到右计算表达式并立即计算副作用。 C 没有。这个表达式在 Java 中定义良好,但在 C 中没有。
标签: java c arithmetic-expressions postfix-operator prefix-operator