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

时间:2014-01-18 18:10:33

标签: c++ c operator-precedence

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

x = f(2) * g(5) + h();

我看过this链接,优先顺序应为f,g和h。 我是对还是不,请解释

2 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分:2)

f(2)g(5)h()任何序列中执行。

f()g()的结果相乘。然后将该产品添加到h()的结果中。