簡體   English   中英

C ++邏輯運算符Q

[英]C++ logical operator 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;
}

實際上,由於De Morgan的定律,它們是相同的:

  !a && !b && !c
= !(a || b) && !c
= !((a || b) || c)
= !(a || b || c)

=這里不是C ++賦值運算符)

否。在您的第一個聲明中,必須滿足所有條件。 &&運算符的意思是All應該為true以使結果為true,否則為false。 在第二條語句中,如果一個或多個條件為真,則該條件將完成。

抱歉,非常簡短的解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM