我认为基本算术运算符在大多数语言中具有相同的优先级。但对于以下代码段,
int a = 5;
a = --a + a++;
//print a
C编译器(GNU GCC)给出了我9
在java中得到的结果8
。这是怎么回事?据我说应该是8(4 + 4)
a = --a + a++;
这在C中调用未定义的行为。
C99§6.5:“ 2。在上一个序列点与下一个序列点之间,对象的存储值最多只能通过对表达式的求值来修改。此外,先前的值应仅读以确定要存储的值。”
在这种情况下,您a
在上一个和下一个之间更改了两次值sequence point
,因此结果可能是任何值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句