if语句中的简单“不等于”运算符无法按预期工作

时间:2018-08-19 15:35:18

标签: c if-statement operators

我目前正在使用带有简单变量的“不相等”运算符来测试C中的if语句。但是由于某种原因它没有按预期工作,我不明白为什么。我已经分别测试了“不相等”运算符,它可以工作,但是将它们添加到一个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);
}

1 个答案:

答案 0 :(得分:2)

如果您想检查// if all variables does not contain 0

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

应该是

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

因为||返回true,如果任何操作数是true。 并且&&仅在所有操作数均为true时返回true