C语言中函数执行的优先顺序

Jai*_*dra 2 c c++ operator-precedence

以下语句的执行顺序是什么:

x = f(2) * g(5) + h();
Run Code Online (Sandbox Code Playgroud)

我看过这个链接,优先顺序应该是f,g和h.我是对还是没有,请解释一下

Moh*_*oun 6

在这种情况下,您无法保证函数的执行顺序.

虽然优先级规则意味着f(2)g(5)之前乘以之前h()添加到结果中,但这些子表达式的执行顺序是实现定义的.

如果您使用具有副作用的功能执行此操作,请不要这样做.根据代码,您可能会看到编译器到编译器的不同结果,也可能看不到.

注意:正如@Jakub Zaverka所提到的,当您处理逻辑运算符&&||因为短路等功能时,规则略有不同.