Jai*_*dra 2 c c++ operator-precedence
以下语句的执行顺序是什么:
x = f(2) * g(5) + h();
Run Code Online (Sandbox Code Playgroud)
我看过这个链接,优先顺序应该是f,g和h.我是对还是没有,请解释一下
在这种情况下,您无法保证函数的执行顺序.
虽然优先级规则意味着f(2)将g(5)之前乘以之前h()添加到结果中,但这些子表达式的执行顺序是实现定义的.
如果您使用具有副作用的功能执行此操作,请不要这样做.根据代码,您可能会看到编译器到编译器的不同结果,也可能看不到.
注意:正如@Jakub Zaverka所提到的,当您处理逻辑运算符&&或||因为短路等功能时,规则略有不同.