我知道由于C ++中的评估顺序导致的未定义行为现象。作为一个例子,我接触到了C ++ Primer的以下代码片段:
cout << i << " " << ++i << endl; //undefined
以及:
int i = f1() * f2(); //f1 or f2 could both be evaluated first.
我已经尝试过实施这两种方法来解决这一现象并将其视为实际行动。然而,特别是在执行程序之后,我始终得到相同的结果,即使我的期望是它会在两个可能的结果之间随机翻转。例如,对于第一个,我应该看到1 1
和0 1
,但我总是看到1 1
。
我原本以为它可能基于机器的当前状态,有点像随机数生成器及其种子如何在Java中工作但我无法证明这一点。
这是为什么?