2017-03-19 7 views
2

私は単純な+ - *^/演算子を持つ二重配列のクラスを構築しようとしています。 私は電源演算子に問題があります^、私はそれが最も高い優先順位(評価された最初の)演算子であることを望みますが、実際には最も低いです。たとえば :C#クラスオペレータの注文

Vector v = new Vector(new double[] {2.0}); 
return v*v^2; 

ではなく、8 のエントリ16とのベクトルを返しますクラスでオペレータの優先度を制御する方法はありますか?

+1

2番目のvを 'v *(v^2)'のように角かっこで囲みます。しかし、最初にv * vを実行してその結果を得るのではなく、v *(この操作の結果)を評価することになります。 – Icepickle

+2

回答:v *(v^2) –

+2

C#、それはあなたのxorの実装です。そのため、かっこを使用する必要があります – Marcin

答えて

2

this表から分かるように、bitwise-exclusive or operatorは実際には乗算よりも優先順位が低くなります。

あなたが優先順位を変更することはできませんが、そうにあなたの割り当てを変更()ブロック

内でそれらをグループ化することによって、それを操作することができます: v^2の結果と vを掛けるだろう

return v*(v^2); 

+0

かっこのまわりには道がありますか?たぶん別のシンボルを使用していますか? – AsaridBeck91

+1

@ AsaridBeck91本当にいいえ、あなたは1つのvの操作の結果に依存しています、あなたはいつもそれを単一にする必要があります – Icepickle

+2

@ AsaridBeck91は 'v * v^2'は単に' v * v * v'あなたは動力演算子を必要としません(ただし、 '^'はC#の動力演算子ではありませんが、そのXORビット演算子です)。 –