【发布时间】:2019-09-13 03:12:48
【问题描述】:
编辑澄清:我不是在问测序是如何工作的。此问题与它被标记为重复的问题不是重复的。我已经知道x++ * ++x 是UB。我在问“表达式的评估顺序是从左到右”这句话的含义。
这句话摘自 Bjarne Stroustrup 的“A Tour of C++”,第 2 版。
我原以为这意味着像int x=2;int y=x++ * ++x 这样的sn-ps 是明确定义的。在我的理解中,从左到右评估意味着首先评估x++(值2),其次评估++x(值4),y 的最终值是8。
但是 clang 警告 multiple unsequenced modifications to 'x',所以我认为我对 Stroustrup 引用的含义的理解一定是错误的。
谁能解释他的实际意思?
【问题讨论】:
-
您没有在示例代码中调用函数。
-
@NathanOliver ,我已经编辑解释了为什么我不觉得这个问题是重复的。
-
重新打开。你想知道的都可以在这里找到:en.cppreference.com/w/cpp/language/eval_order