我是Native C语言的新手,但没有看到错误。

我试图在这种情况下使用if操作:

#define PAGE_A 0
#define PAGE_B 1

int pageID = 0;


if (pageID != PAGE_A || pageID != PAGE_B) {

    //Do something
}


但它不起作用。如果页面ID = 0或1,则转到“做某事”。如果我只写:

if (pageID != PAGE_A) {

    //Do something
}


有用。如果pageID = 1-x,它会“做某事”,否则不会...

最佳答案

如果任一操作数为true,则逻辑OR运算符||的计算结果为true。

如果pageID为0,则第一个条件为false,但第二个条件为true,因此整个表达式的计算结果为true。同样,如果pageID为1,则第一个条件为true,但第二个条件为false,因此整个表达式的计算结果为true。如果pageID是任何其他值,但条件为true,则整个表达式为true。

相反,您需要的是逻辑AND运算符&&,仅当两个操作数都为true时才为true。

if (pageID != PAGE_A && pageID != PAGE_B) {


读出来,如果pageID都不为0并且pageID都不为1,则条件为true。

关于c - 或如果在操作中进行操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59176317/

10-12 16:01