私は今日、.NETフレームワークが計算を実行するときにBODMASの操作順序に従うことを発見しました。これは、計算は次の順序で行われている。.NETにおけるBODMASの原則
- ブラケット
- 受注
- 課
- 乗算
- 追加
- 減算
私の周りに検索したが.NETを確認する文書は見つかりません。間違いなくがこの原則に従っていますが、そのような文書はどこにありますか?私が正しい方向に向けることができれば幸いです。
私は今日、.NETフレームワークが計算を実行するときにBODMASの操作順序に従うことを発見しました。これは、計算は次の順序で行われている。.NETにおけるBODMASの原則
私の周りに検索したが.NETを確認する文書は見つかりません。間違いなくがこの原則に従っていますが、そのような文書はどこにありますか?私が正しい方向に向けることができれば幸いです。
C#は学校で学んだ方法でBODMASルールを実行しません。あなたが持っていると仮定します。
A().x = B() + C() * D();
あなたは単純に加え、その後、乗算が「最初に行われる」と思い、および割り当て最後、したがって、これは相当である可能性があります
c = C();
d = D();
product = c * d;
b = B();
sum = b + product;
a = A();
a.x = sum;
しかし、何が起こるかではありません。 BODMASルールでは、オペレーションを正しい順序で実行する必要があります。 オペランドは、任意の順序で計算できます。
C#では、オペランドはの左から右へと計算されます。したがって、この場合には、何が起こるだろうことは、論理的に同じである。また、
a = A();
b = B();
c = C();
d = D();
product = c * d;
sum = b + product;
a.x = sum;
、C#が前ごとほかのすべての乗算を行いません。たとえば:
A().x = B() + C() + D() * E();
が以下のように計算される。
a = A();
b = B();
c = C();
sum1 = b + c;
d = D();
e = E();
product = d * e;
sum2 = sum1 + product;
a.x = sum2;
を参照してください、一番左の加算は乗算の前に起こります。乗算はの右端のの前に行われなければなりません。
基本的には、ルールは「式を正しく括弧で括って、2項演算子しか持たないようにしてから、右側の前にある2項演算子のすべての左側を評価します。したがって、例は:
A().x = ((B() + C()) + (D() * E()));
となります。左端加算は右端加算のためのオペランドであるため、左オペランドは常に右オペランドの前に実行されるため、左端加算は乗算の前に実行しなければなりません。このテーマはあなたが興味のある場合は
、それに私の記事を参照してください。これは、依存言語は
http://blogs.msdn.com/b/ericlippert/archive/tags/precedence/
優れた答え –
http://msdn.microsoft.com/en-us/library/aa691323%28v=vs.71%29.aspxすべてpriorites詳細とあなたのリストにない非常に集計を行います。
です。 .NETはフレームワークです。 – Groo
C#の場合http://msdn.microsoft.com/en-us/library/6a71f45d(v=vs.80).aspx –
ドキュメントによると、C#はBODMASに従わないので、証明するコードを表示できますします。 –