在这些情况下,为什么C / C ++不按从左到右的顺序计算表达式: 最初x = 1
Evaluating x + ++x gives 4.
如果进行正常评估(++的优先级高于+)则结果应为1 + 2 = 3
类似地:
x + ++x + x gives 6
x + x + ++x gives 4
为什么结果不同?
更多案例:
x + x++ +x gives 5
C / C ++遵循什么规则呢?
答案 0 :(得分:0)
具体地说,这些表达式的结果没有定义,这是因为Cs要求多次访问(不包括所有访问都是读取的情况)总是在它们之间有一个序列点(例如a;或,)。你得到的结果是有效随机的,取决于你的编译器,或者理论上甚至可以在你的程序运行之间改变,请看这里有关序列点的信息:
http://en.wikipedia.org/wiki/Sequence_point
在这里,如果你想了解未定义的行为(你滥用变量会导致什么):
http://en.wikipedia.org/wiki/Undefined_behavior#Examples_in_C_and_C.2B.2B