C 中函数执行的优先顺序

Precedence order of function execution in C

本文关键字:顺序 执行 函数      更新时间:2023-10-16

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

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

我看过这个链接,优先顺序应该是f,g和h。我是否正确,请解释

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

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

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

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

x = f(2) * g(5) + h();
f(2)g(5)h()任何顺序执行 - 如果处理器支持的话,甚至可以同时执行。

f()g()的结果成倍增加。 然后将该产品添加到h()的结果中。