4

そして、最初f(x)+(g(y))に電話することを確認できますか?g(y)多くの場合、式の順序は定義されていませんが、この場合、括弧は機能しますか?

4

3 に答える 3

24

括弧は、優先順位をオーバーライドするために存在します。評価の順序には影響しません。

于 2013-07-05T11:27:01.140 に答える
12

ほら、二行!

auto r = g(y);
f(x) + r;

これにより、2 つの関数呼び出しの間に非常に重要なシーケンス ポイントが導入されます。他の方法もあるかもしれませんが、この方法は単純明快です。括弧はシーケンスポイントを導入しないため、解決策ではないことに注意してください。

于 2013-07-05T11:27:47.210 に答える
2

いいえ。+演算子が再定義されない限り、そのようなものは左から右に評価されます。演算子の優先順位に影響を与えることができたとしても、必ずしも同じ順序で評価されるfとは限りません。の前に評価するg必要がある場合は、いつでも次のことができます。fg

auto resultOfF = f(x);
auto resultOfG = g(x);
resultOfF + resultOfG;
于 2013-07-05T11:28:40.637 に答える