2012-04-20 15 views
6

この...ちょうど私が聞いて好奇心の外にあるもし(右辺値==左辺値)

私はどこでも見コードの99%「の形式のものであろう、「IF」を使用している場合(右辺値= = LValue)... "と表示されます。例:

If (variableABC == "Hello World") ... 

私は反対ご覧他の例があります。これは始め、なぜどのように行うの

If ("Hello World" == variableABC) 

誰もが知っていますか?それが原因でCおよびC++でのこの間違いで行われ

+0

ここで何が起きているのかは、等価性テストなので、 'a ==" b "'、 "b" == a'であれば、どちらの値が '=='真実でなければならない。最初のシナリオは、偶然に '=='の代わりに '='を使用したときの割り当てを防ぐために行われると思います。 –

+0

これらの表現は「ヨーダ表現」と呼ばれます。http://wiert.me/2010/05/25/yoda-conditions-from-stackoverflow-new-programming-jargon-you-coined/ –

答えて

3

if (variableABC = "Hello World") ... 
       ^
       (Watch here) 

我々はコンパイルエラーを持っている。この方法は、例えば:

if ("Hello World" = variableABC) 
       ^
        (Watch here) 

、C#とJavaの言語はこれを必要としませんトリック。

後者は意図しない割り当てを防ぐために行われ
+0

驚くべき:私が許可される前答えに印を付けるために、すでに3つの答えがあります。 – KurtisLininger

2

、あなたは、誤って、代入演算子=の代わりに、いくつかの言語があれば、条件に割り当てを許可していません== "

等価演算子を使用する場合はここでどちらの場合も問題ありません。

if条件で代入を受け入れる言語では、私はいつも後者の場合を優先します。

1

これは、開発者が==の代わりにwrite =を頻繁に行うエラーのために行われます。 C++では、整数はブール値として扱うことができ、コンパイル時にエラーは発生しません。

関連する問題