2011-04-12 210 views
0

我有那些布爾值:C#邏輯問題

bool test = false && true || true; // true 
bool test1 = false && (true || true); // false 

現在,任何人都可以解釋這是爲什麼?不應該一樣嗎?

謝謝:)

回答

12

的& &操作員precedence超過||也就是說,你的第一個表達式等價於:

bool test = (false && true) || true; 

這給:

bool test = false || true; 

這給:

bool test = true; 

在第二種情況下,你都明確分組操作數:

bool test1 = false && (true || true); 

這給:

bool test1 = false && true; 

這給:

bool test1 = false; 
0

&&在你的第一個表達式首先計算 - 這意味着你最終的false || true,而不是false && true的第二表達式的結果。

0

第一次評估false && true第一次(false),然後結果|| true,這給出true

第二評估括號首次如此true || truefalse && true值,然後用&& false的結果,這給false

1

的測試,這是假的,那麼你有false || true這是true。 在第二種情況下,您首先評估(true || true) =>true,然後false && truefalse

0

在您的第一個示例中false & & true將首先評估,並將其評估爲false。然後,假或真當然評估爲真。

在您的第二個問題中,由於()的真或真,首先評估爲true,則返回true & & false將被評估爲false。

所以它是非常有意義的。

0

第一招:

False and True or True 

一個條件滿足,那麼它的返回真

第二個:

False and (True or True) = False and True 

一個條件失敗,那麼它的返回假

0

bool test = false && true || true; // true

這首先是真實的,因爲該陳述正在測試它是真是假。

bool test1 = false && (true || true); // false

因爲語句是測試它是否是真假第二個,如果假的。

0

在第一個& &優先於||。因爲你沒有明確分組。

在第二個中,(...)導致||被首先評估。

因此有不同的結果。

0

優先的順序流動以如下順序

  1. ()
  2. & &
  3. ||

因此,在第一種情況下&&接管||和insecond情況()接管&&