尝试理解 C++ 中的 --x 与 x--

bes*_*r14 -2 c++ expression-evaluation undefined-behavior c++17

我正在尝试评估这一点,即使它很简单,我似乎也无法理解它。我得到了 16,但提供的答案是 12。我不明白这怎么可能是 12。

--x首先这样做了,所以首先y是 4,然后我需要乘以x--,但它也会是 4,因为它是在之后评估的,并且x之后会递减到 3。所以4*4 = 16

有人可以解释我的推理有什么问题吗?

int x, y;
x = 5;
y = --x * x--;
std::cout << y;
Run Code Online (Sandbox Code Playgroud)

use*_*566 5

无法保证 或--x是否x--首先被评估,因此结果是不确定的。