为什么以下以下程序打印“是”而不是“否”?

没有将变量初始化为2。

    bool hello = 0;
    int a = 1;
    int b = 3;
    int c = 4;
    int d = 5;

    if (a || b || c || d == 2) {
        hello = 1;
    }

    if (hello == 1) {
        printf("Yes");
    }

    if (hello == 0) {
        printf("No");
    }

    return 0;
}

最佳答案

该声明

if (a || b || c || d == 2)


等效于:

if (a != 0 || b != 0 || c != 0 || d == 2)


相等比较不会自动分布在所有变量中。如果要这样做,则需要显式执行所有比较:

if (a == 2 || b == 2 || c ==2 || d == 2)

关于c - 为什么以下以下程序打印"is"而不是“否”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31634087/

10-15 12:24