2013-03-08 179 views
4

我在一本書中讀到這一點,只是想知道它是如何工作的,如果你會做這樣的事情,併爲什麼你會這樣做。我知道你可以退回(x>y)但你爲什麼要做false == (x > y)false ==(x> y)如何工作?

+3

*「如果'x'不大於'y'」*這是一種倒退的方式寫'x <= y',但爲什麼不呢? – deceze 2013-03-08 09:25:08

+1

[**尤達條件**](http://www.codinghorror.com/blog/2012/07/new-programming-jargon.html)它是...:D – 2013-03-08 10:10:24

回答

9

這只是寫

x <= y 

的更詳細的方式x > y結果進行評估和比較false。由於x > y結果是布爾值,這是一樣的書寫

!(x > y) // an == true is implied here if you don't add it yourself 

這當然是一樣的書寫

x <= y 
1
  • if(x <= y)
  • if(!(x > y))
  • if((x>y) == false)

他們都評估爲相同的條件。這只是不同的寫作方式。我通常更喜歡使用更可讀的。

1

假設我們有三個變量,並且都採用二進制值。我們可以使用它來實現一些結果。像這樣。

ex:if(a ==(b> c))代表第一個場景。

A B C 
0 0 0 
0 0 1 
0 1 0 
0 1 1 
1 0 0 
1 0 1 
1 1 0 
1 1 1 
+0

你的答案,雖然信息豐富,錯過了這個問題的重點。這裏只有2個變量,OP不確定一個奇怪的評估。 – Flater 2013-03-08 10:42:34

+0

你是正確的,但如果我們必須使用兩個運算符==&>。我們應該有3個變量像條件運算符。 – Amrendra 2013-03-08 10:45:53

1

這是一個很常見的構造,將不變值置於==左側的變量和右側的變量上。 這是爲了防止您不小心遺漏了其中一個等號。這樣編譯器會突出顯示你的錯誤。

例如是你不小心輸入

如果(A =真){...}

這將始終執行括號裏面的代碼,因爲它的值設置爲true。

但是如果你不小心輸入

如果(真= A){...}

編譯器提醒你,因爲你不能在這個變化真

雖然價值特殊的例子有很多更好的方式來編寫表達式,而不需要雙等號(參見所有以前的答案)

相關問題