"(f(x))+ g(y)"能否确保在C++中首先调用f(x)?

She*_*owu 4 c++ sequence-points

并且f(x)+(g(y))可以确保g(y)先打电话吗?我知道表达式中的顺序在很多情况下是未定义的,但在这种情况下括号是否有效?

R. *_*des 24

存在括号以覆盖优先级.它们对评估顺序没有影响.


Joh*_*nck 12

看马,两行!

auto r = g(y);
f(x) + r;
Run Code Online (Sandbox Code Playgroud)

这引入了两个函数调用之间最重要的序列点.可能还有其他方法可以做到这一点,但这种方式似乎很简单明了.请注意,您的括号不会引入序列点,因此不是解决方案.