2016-02-01 17 views
6

このコードでは、何らかの理由で変数が割り当てられていました。この目的は何ですか: "double x = x =(a-b)/(c-1);"

double x = x = (a - b)/(c - 1); 

私にはあまり意味がありません。この背後には理由がありますか?

+0

あなたは風かもしれない右側の式を見ることができるように分母がゼロである。 – Saeid

+1

少なくとも私には正当な理由はありません。あなたは作家に尋ねることができます。私の賭けはtypoです... –

+0

@Thomas:コードはAutodeskによってオープンソースです:Line 117- https://github.com/AMEE/revit/blob/master/samples/Revit%202012%20SDK/Samples/Reinforcement /CS/BeamGeometrySupport.cs – Saeid

答えて

6

複数の変数を一度に割り当てると、すべての変数が右手オペランドの値を取得します。この二重代入を行うと、値は提供されません。コンパイラによってdouble x = (a - b)/(c - 1);に最適化されることさえあります。これは間違いなくタイプミスです。

+0

ええ、私はそれが誤字かもしれないと思う。しかし、より良い理由が望んでいた。 – Saeid

+0

間違いなくタイプミス。 2番目の 'x ='は効果的に何もしません。 –

+0

操作の順序付けについて考えると、関心事です(xがdoubleと宣言された場合、xはxが設定されたものと等しくなります)。私はそれがインタビューで人々を踏みにじると想像することができます。タイプミスでは、それらが二重になるはずであると仮定します。x =(...) –

3

そのa typo。あなたの場合には、再度自分自身に値を割り当てる理由はありません。サイドノートでは

:あなたは、単に

double x = x; 

を書く場合はしかし、その後、コンパイラはまた、あなたのwarning sayingを与える:

それから値を取得しますあなたの場合は

enter image description here

それはコンパイルされ、問題はなくなりますが、実際の意味はありません。このような構築物は意味をなさない可能性がIdeone Demo

1

あなたがassign the same value to multiple variablesにしたいときです:

double x, y; 

x = y = 42; 

ためresult of an assignment expression (y = 42) is the value that was assigned (42)今、あなたは、同じ値で初期化2つの変数を持っています。

しかし、現在の形(またはfrom its original source, as you indicated)で、のような:

double spacing = spacing = 42; 

は意味がない、と単純化することができます。

double spacing = 42; 
関連する問題