-1

在这些情况下,为什么 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++ 遵循什么规则呢?

4

1 回答 1

0

具体来说,这些表达式的结果没有定义,这是因为 Cs 要求多次访问(不包括所有访问都是读取的情况)在它们之间总是有一个序列点(例如 a ; 或 ,)。您得到的结果实际上是随机的,并且取决于您的编译器,或者理论上甚至可能在您的程序运行之间发生变化,请参阅此处以获取有关序列点的信息:

http://en.wikipedia.org/wiki/Sequence_point

在这里,如果您想了解未定义的行为(您滥用变量的原因):

http://en.wikipedia.org/wiki/Undefined_behavior#Examples_in_C_and_C.2B.2B

于 2014-02-19T11:19:11.683 回答