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

Waf*_*ffl -5 c boolean

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

没有变量初始化为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;
}
Run Code Online (Sandbox Code Playgroud)

Bar*_*mar 7

该声明

if (a || b || c || d == 2)
Run Code Online (Sandbox Code Playgroud)

相当于:

if (a != 0 || b != 0 || c != 0 || d == 2)
Run Code Online (Sandbox Code Playgroud)

相等比较不会自动分布在所有变量上.如果要这样做,则需要明确执行所有比较:

if (a == 2 || b == 2 || c ==2 || d == 2)
Run Code Online (Sandbox Code Playgroud)