2012-04-20 79 views
6

這只是出於好奇,我問...如果(R值= =左值)

當使用「IF」,將是格式「的代碼,我看到任何地方,99%,如果(R值= = LValue)...「。例如:

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

還有其他的例子,我看到對面:

If ("Hello World" == variableABC) 

任何人都知道這是如何開始以及爲什麼它做什麼?

+0

由於這裏發生的是平等測試,因此如果'a ==「b」'then「」b「== a',哪一個值在'=='也必須是真實的。我想象第一種情況是爲了防止意外時使用'='而不是'=='來防止賦值。 – 2012-04-20 19:17:43

+0

這些表達式被稱爲「尤達表達式」,參見http://wiert.me/2010/05/25/yoda-conditions-from-stackoverflow-new-programming-jargon-you-coined/ – 2012-04-20 19:32:18

回答

3

正是因爲這個錯誤的C和C++實現:

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

這樣,我們有一個編譯錯誤:

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

例如,C#和Java語言不需要這種招。

+0

令人驚歎:在我被允許之前爲了標記答案,已經有3個答案。 – KurtisLininger 2012-04-20 19:26:56

2

後者是爲了防止意外的任務,如果你錯誤地使用賦值運算符=,而不是平等的經營者=='

一些語言不允許在if條件的分配,其中案件或是好的。

在if條件下接受任務的語言中,我總是比較喜歡用後一種情況。

1

這樣做是因爲開發人員經常寫錯=而不是==的錯誤。在C++中,整數可以看作是布爾值,在編譯時你沒有錯誤。