答案 0 :(得分:6)
在这种情况下,您无法保证函数的执行顺序。
虽然优先规则意味着f(2)
在g(5)
添加到结果之前将乘以h()
,但这些子表达式的执行顺序是实现定义的。
如果您使用具有副作用的功能进行此操作,请不要这样做。根据代码的不同,您可能会看到编译器到编译器的不同结果,也可能看不到。
注意:正如@Jakub Zaverka所提到的,由于短路等功能,当您处理逻辑运算符&&
或||
时,规则略有不同。
答案 1 :(得分:2)
f(2)
,g(5)
和h()
在任何序列中执行。
f()
和g()
的结果相乘。然后将该产品添加到h()
的结果中。