這個問題可能看起來很不太好,但我的問題是這樣的: 這兩個語句在邏輯上是相同的嗎?C++邏輯運算符Q
int a;
int b;
int c;
if (!a && !b && !c)
//do something
if (!(a || b || c))
//do something
這個問題可能看起來很不太好,但我的問題是這樣的: 這兩個語句在邏輯上是相同的嗎?C++邏輯運算符Q
int a;
int b;
int c;
if (!a && !b && !c)
//do something
if (!(a || b || c))
//do something
真值表對理解邏輯很有用。
#include <iostream>
using std::cout;
using std::endl;
int main(void) {
int a;
int b;
int c;
bool differ = false;
cout << "a b c x y\n";
for (a = 0; a <= 1; a++) {
for (b = 0; b <= 1; b++) {
for (c = 0; c <= 1; c++) {
bool x = (!a && !b && !c);
bool y = (!(a || b || c));
differ = differ || (x != y);
cout << a << " " << b << " " << c << " " << x << " " << y << "\n";
}
}
}
if (differ) {
cout << "they differ" << endl;
} else {
cout << "they are the same" << endl;
}
return 0;
}
其實他們是同一感謝德摩根定律:
!a && !b && !c
= !(a || b) && !c
= !((a || b) || c)
= !(a || b || c)
(=
這裏是不是C++賦值運算符)
謝謝你的謝意! – FinalFantasyFan
不需要。在您的第一條語句中,必須滿足所有條件。 & &運營商手段所有應該是真實的,以使結果爲真,否則將是錯誤的。在你的第二個陳述中,如果一個或多個條件成立,那麼條件就完成了。
對不起,很簡單的解釋。
您需要查看[de Morgan的法律](https://en.wikipedia.org/wiki/De_Morgan's_laws)。 – EJP
抱歉,自從括號改變了條件以來,我認爲這讓我感到困惑。 –
你在找什麼爲https:// EN。 wikipedia.org/wiki/De_Morgan's_laws –