|| vs或关键字

时间:2012-08-08 23:45:48

标签: c++

简单,可能很容易回答问题。 ||之间有什么区别?或者像if语句那样。

简单示例:

#include <iostream>

int main(){
    int x = 8;

    if(x == 8 or 17){
        std::cout << "Hello World!\n";
    }
}

#include <iostream>

int main(){
    int x = 8;

    if(x == 8 || 17){
        std::cout << "Hello World!\n";
    }
}

这些对我来说似乎也是一样的。他们都编译,他们都显示“Hello World!”我一直用||甚至不知道或。他们做同样的事吗?或者使用\ n或endl有一点点差异,其中一个行为略有不同。对不起,如果这是一个非常简单的问题。 谢谢你的时间。

3 个答案:

答案 0 :(得分:3)

正如Luchian所说,没有语义差异。 “关键字”部分中的draft of the latest C++ standard says

  

此外,表5中显示的替代表示   某些运营商和标点符号(2.6)是保留的,不得保留   否则使用:

and     and_eq  bitand  bitor  compl   not
not_eq  or      or_eq   xor    xor_eq

但是阅读代码的人可能会有所不同。 “逻辑或”的||运算符可追溯到几十年前。替代表示更新。

至少早在1998年的C ++标准中就引入了它们(我不知道ISO C ++之前是否有它们)。至少可以想象你可能会遇到一个不能识别它们的C ++编译器,但如果是这样的话,它将会是一个足够老的编译器,你将遇到其他问题。 C在1995年的修正案中引入了类似的标识符(但只有#include iso646.h>)。

至少在C中,可能在C ++中,这些替代表示以及有向图和三字图被引入以满足具有字符集的系统,这些字符集不包括C和C ++所需的所有字符:

{ } [ ] # & | ^ ~ !

随着更多现代字符集的引入,特别是Unicode,这种系统越来越少见。

但据我所知,它们很少用在代码中(我不认为我曾经见过任何使用它们的代码),而且有些C ++程序员可能不会意识到它们。如果您使用||而不是or,我相信您的代码会更清晰。

正如Luchian所说,(x == 8 || 17)并不代表你对英语语法的期望。它并不意味着“x等于8或17”;这意味着((x == 8) || 17); 17本身被视为条件,而不是x。可能你想写(x == 8 || x == 17)

答案 1 :(得分:1)

完全相同,它是另一种运营商。您可以找到完整列表here

另请注意,x == 8 or 17始终返回true。它不会检查x8还是17

答案 2 :(得分:0)

它们之间没有区别,它们都做同样的事情