這可能是也可能不是一個愚蠢的問題,但爲什麼會在以下2 if語句導致不同如果報表工作不同則預計
可以說k = "z";
if (!k=="x" || !k=="y")
{
//do something
}
2.
if (!(k=="x" || k=="y"))
{
//do something
}
在我的腦海裏這兩個語句應該打//做一些事情....只是一個底部將真正受到打擊。其中btw是預期的結果。
對不起,但是我不能把我的無知的想法包裹在這。
這可能是也可能不是一個愚蠢的問題,但爲什麼會在以下2 if語句導致不同如果報表工作不同則預計
可以說k = "z";
if (!k=="x" || !k=="y")
{
//do something
}
2.
if (!(k=="x" || k=="y"))
{
//do something
}
在我的腦海裏這兩個語句應該打//做一些事情....只是一個底部將真正受到打擊。其中btw是預期的結果。
對不起,但是我不能把我的無知的想法包裹在這。
你的問題是「爲什麼是NOT(X OR Y)
(NOT X) OR (NOT Y)
有什麼不同?」
NOT(X OR Y)
如果X或Y爲真,則爲false,否則爲true。
(NOT X) OR (NOT Y)
如果X和Y都爲真,則爲false,否則爲true。
「X或Y爲真」和「X和Y都爲真」是不同的。
這裏是一個很好的技術,當你感到困惑:畫一個真值表:
X Y NOT X NOT Y X OR Y (NOT X) OR (NOT Y) NOT(X OR Y)
T T F F T F F
T F F T T T F
F T T F T T F
F F T T F T T
現在是明確表示,他們有什麼不同?
如果您現在繪製NOT(X AND Y)
的真值表,您會發現它與(NOT X) OR (NOT Y)
相同,因此這兩個表達式是等效的。
如果您繪製了真實表(NOT X) AND (NOT Y)
,您會發現它與NOT(X OR Y)
相同。再次,這兩個表達式是等價的。
確保這一點很清楚。
現在,你在這裏有一個更大的問題:
k != "x" || k != "y"
這謂詞不能是任何東西,但卻是事實。假設k是「x」。那麼它顯然不是「y」,所以謂詞是真實的。假設k是「y」。那麼它顯然不是「x」,所以謂詞是真實的。假設k是任何其他值。那麼它顯然既不是「x」也不是「y」,所以謂詞是真實的。所以無論如何,這是真實的。 (NOT X) OR (NOT Y)
確實不是的意思是「既不是X也不是Y」。
這是因爲你是小姐 - 理解邏輯表達式評估。請參閱Wikipedia頁面DeMorgans Laws進一步閱讀,但你需要的是該位的要點...
!(A || B)
相同!A && !B
這是不是一個真正的愚蠢的問題......這是一個非常簡單的邏輯錯誤,以及相當普遍。
爲了完整,我要補充以下,以及...
!A || !B
相同!(A && B)
'=!= =='........ – zerkms
不同的是,第二個例子編譯,而第一個不編譯... –
是的,抱歉不好的例子,但在我身邊im檢查k.contains(「」)在哪種情況下你不想使用=!= == ... –