评估顺序(未定义的行为)会导致一致的结果吗?

时间:2015-07-04 07:56:20

标签: c++

我知道由于C ++中的评估顺序导致的未定义行为现象。作为一个例子,我接触到了C ++ Primer的以下代码片段:

cout << i << " " << ++i << endl; //undefined

以及:

int i = f1() * f2(); //f1 or f2 could both be evaluated first.

我已经尝试过实施这两种方法来解决这一现象并将其视为实际行动。然而,特别是在执行程序之后,我始终得到相同的结果,即使我的期望是它会在两个可能的结果之间随机翻转。例如,对于第一个,我应该看到1 10 1,但我总是看到1 1

我原本以为它可能基于机器的当前状态,有点像随机数生成器及其种子如何在Java中工作但我无法证明这一点。

这是为什么?

0 个答案:

没有答案