我有那些布爾值:C#邏輯問題
bool test = false && true || true; // true
bool test1 = false && (true || true); // false
現在,任何人都可以解釋這是爲什麼?不應該一樣嗎?
謝謝:)
我有那些布爾值:C#邏輯問題
bool test = false && true || true; // true
bool test1 = false && (true || true); // false
現在,任何人都可以解釋這是爲什麼?不應該一樣嗎?
謝謝:)
的& &操作員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;
的&&
在你的第一個表達式首先計算 - 這意味着你最終的false || true
,而不是false && true
的第二表達式的結果。
第一次評估false && true
第一次(false
),然後結果|| true
,這給出true
。
第二評估括號首次如此true || true
你false && true
值,然後用&& false
的結果,這給false
的測試,這是假的,那麼你有false || true
這是true
。 在第二種情況下,您首先評估(true || true)
=>true
,然後false && true
即false
。
在您的第一個示例中false & & true將首先評估,並將其評估爲false。然後,假或真當然評估爲真。
在您的第二個問題中,由於()的真或真,首先評估爲true,則返回true & & false將被評估爲false。
所以它是非常有意義的。
第一招:
False and True or True
一個條件滿足,那麼它的返回真
第二個:
False and (True or True) = False and True
一個條件失敗,那麼它的返回假
bool test = false && true || true; // true
這首先是真實的,因爲該陳述正在測試它是真是假。
bool test1 = false && (true || true); // false
因爲語句是測試它是否是真假第二個,如果假的。
在第一個& &優先於||。因爲你沒有明確分組。
在第二個中,(...)導致||被首先評估。
因此有不同的結果。
優先的順序流動以如下順序
因此,在第一種情況下&&
接管||
和insecond情況()
接管&&