2012-12-07 49 views
2

我有一個foo方法和主要方法,我有幾個變量和一個打印語句。參加|| (或)語句作爲輸入?

public static boolean foo(int x, boolean b) { 
    if (x < 0) { 
      return true; 
    } 
    return !b; 
} 

說我打印以下:

foo (-3, c || !c) 

我無法理解什麼||應該這樣做。我在main中聲明瞭boolean c = false,但是我不知道它可以如何選擇輸入c(false)或!c(true)。另外,側面問題:布爾變量前面的感嘆號只會給出相反的權利?即如果輸入是假的,並且foo返回!b,它會返回true?

+1

它不選擇。 ||是一個邏輯運算符。真||假評估爲真,因爲至少有一個是真的。 –

回答

3

這是一種重言式,可以說,永遠是真的。

c || !c意思是:「c 不是c」。其中之一永遠是真的。

1

我看不出它如何可以選擇輸入C(假)或!C(真)

這不是「選擇輸入」兩種不同的可能性。它通過的值評估結果c || !c,一個布爾值。

注意:x || !x將始終評估爲true,對於任何布爾值x

+0

我要睡覺了,但是如果使用了功能,也許您可​​以擴展評估順序和副作用。 –

1

c || !c將永遠true - 你可能也與

foo (-3, true) 
1

替換代碼如果聲明c爲:

boolean c = false;// or true 

然後c || !c總會導致成true

,所以你的方法調用foo (-3, c || !c)不過是相當於foo (-3, true)

1

「||」意味着OR,所以任何x ||無論您將x聲明爲false還是true,!x將始終返回true。