我知道函数参数的评估顺序在 C++ 中是未指定的,见下文,
// 简单明显的一个。
callFunc(getA(),getB());
可以等价于:
int a = getA();
int b = getB();
callFunc(a,b);
Or this:
int b = getB();
int a = getA();
callFunc(a,b);
这很好,我想大多数人都知道这一点。
但是我已经尝试过 VC10、gcc 4.72 并且它们都首先评估 b(从右到左),这意味着 b 先被推入堆栈帧,然后是 a。
我只是想知道我应该尝试使用哪个 c++ 编译器来使上面的代码评估第一个?所以 a 在 b 之前被推入堆栈。
谢谢