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

hgb9j2n6  于 2023-02-21  发布在  其他
关注(0)|答案(2)|浏览(151)

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

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

我看过this的链接,应该是f,g,h,对不对,请解释一下

uyto3xhc

uyto3xhc1#

在这种情况下,您无法保证函数的执行顺序。
虽然优先级规则意味着f(2)将在h()加到结果之前乘以g(5),但是这些子表达式的执行顺序是由实现定义的。
如果您对有副作用的函数执行此操作,请不要这样做。根据代码的不同,您可能会看到不同编译器的不同结果。

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

sbtkgmzw

sbtkgmzw2#

使用x = f(2) * g(5) + h();
f(2)g(5)h()以 * 任何 * 顺序执行-如果处理器支持,甚至可能同时执行。
f()g()的结果相乘,然后将乘积与h()的结果相加。

相关问题