if 语句中的简单 "not equal" 运算符无法按预期工作

Simple "not equal" operator in if-statement does not work as expected

我目前正在使用具有简单变量的 "not equal" 运算符测试 C 中的 if 语句。但由于某种原因它没有按预期工作,我不明白为什么。我已经单独测试了 "not equal" 运算符并且它有效,但是将它们添加到一个单独的 if 语句中不起作用。

我可能缺少一些简单的东西。

int nr1, nr2, nr3;
nr1 = 1;
nr2 = 0;
nr3 = 0;

if (nr1 != 0) {
    printf("nr1 - statement: true");
}
else {
    printf("nr1 - statement: false");
}

printf("\n\n");

if (nr2 != 0) {
    printf("nr2 - statement: true");
}
else {
    printf("nr2 - statement: false");
}

printf("\n\n");

if (nr3 != 0) {
    printf("nr3 - statement: true");
}
else {
    printf("nr3 - statement: false");
}

printf("\n\n");

printf("-----------------------------\n\n");

// if all variables does not contain 0
if (nr1 != 0 || nr2 != 0 || nr3 != 0) {
    printf("if-statement: True\n\n");
    printf("nr1: %d\nnr2: %d\nnr3: %d", nr1, nr2, nr3);
}

//if one variable contain 0
else {
    printf("if-statement: False\n\n");
    printf("%d %d %d", nr1, nr2, nr3);
}

如果你想检查// if all variables does not contain 0那么,

这个

if (nr1 != 0 || nr2 != 0 || nr3 != 0)

应该是

if (nr1 != 0 && nr2 != 0 && nr3 != 0)

因为 || returns true 如果任何操作数是 true。 和 && returns true 仅当所有操作数都是 true.