C++ 函数执行顺序-cpp
下面的代码C++ 函数执行顺序-cpp,c++,function,C++,Function,下面的代码 void function(char* p1, char* p2) { // [...] return; } char* print(char* msg) { printf("%s\n", msg); return msg; } function(print("first"), print("second")); 给出如下输出: 第二 首先 我很好奇为什么它从右到左执行函数。< /P> < P> C++标准,函数调用(5.2.2/4)< /强>,表示
void function(char* p1, char* p2)
{
// [...]
return;
}
char* print(char* msg)
{
printf("%s\n", msg);
return msg;
}
function(print("first"), print("second"));
给出如下输出:
第二
首先
我很好奇为什么它从右到左执行函数。< /P> < P> C++标准,<强>函数调用(5.2.2/4)< /强>,表示: 调用函数时,应使用相应的参数初始化每个参数。[注:此类初始化相互之间的顺序不确定-结束注] 对于这段代码,您的编译器选择按从右到左的顺序初始化参数。如果使用不同的代码,甚至是相同的代码,编译器可能会做出不同的选择。标准没有明确规定订单,您不能依赖它
如果希望强制执行特定的顺序,则必须显式地对这些函数调用排序。此问题是由于函数使用的堆栈内存造成的
功能(打印(“第一”),打印(“第二”)代码>
此功能的执行如下所示:
// Push Operation
1. Call function()
2. Call print("First")
3. Call Print("Second")
// Pop Operation
4. Execute Print("Second")
5. Execute Print("First")
6. Execute function()
因此,输出为第二优先
有关更多信息,请参阅
希望这将有助于您理解该标准没有规定参数评估的顺序,应由供应商实施该标准参见相关内容: