3

と の両方をオーバーロード&*ました。私がこれを行う場合:

hgh=(xxx&yy)*vprod1;

期待どおりに動作します。

私がこれを行う場合:

hgh=xxx&yy*vprod1;

コンパイラ エラーが発生するInvalid operands to binary expression.

コンパイラはこれをどのように読み取りますか: hgh=xxx&yy*vprod1;-- 上の例のように、括弧を使用して左から右に移動しませんか? 括弧が式の別の部分にある場合、コンパイラがそれを読み取る方法に違いがあることは理解できますが、なぜそれがここに当てはまるのでしょうか?

両方のオーバーロードの戻り値は同一であり、この計算ではxxおよび と同じ型を返すことに注意してください。yy

4

1 に答える 1

8

* has higher precedence than &, so it's applied first. Your expression is basically xxx & (yy * vprod1);

于 2013-06-12T05:39:21.550 に答える