gpt4 book ai didi

c++ - 函数参数列表中的函数调用是否加深了堆栈?

转载 作者:行者123 更新时间:2023-11-27 23:29:32 26 4
gpt4 key购买 nike

当调用 F(argument_expression) 时,argument_expression 是否在为 F 压栈之前求值?

例如,当调用 F(G(H(arg))) 时,编译器是否先为 H 压栈、评估 H、弹出,然后为 G 压栈等?或者它是先为 F 压栈,然后为 G,然后为 H,然后弹出 3 层?

此外,一种方式是否比另一种方式更快?

最佳答案

您实际上问了两个正交问题。

求值 的概念是从程序员的角度出发的,在这种情况下,C++ 标准对其进行了明确定义。是的,函数的参数总是在函数被调用之前求值。

但是,该标准并未指定应如何管理堆栈。编译器可以自由采用您建议的任何一种方法。当然,它可能会采取第三种选择,即直接内联一个或多个嵌套函数。可能还有其他选择。

关于c++ - 函数参数列表中的函数调用是否加深了堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6447208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com