1

简单,可能很容易回答问题。|| 和 || 有什么区别?和或类似 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 ,其中一个行为略有不同。对不起,如果这是一个非常简单的问题。谢谢你的时间。

4

3 回答 3

3

正如 Luchian 所说,没有语义差异。最新的C++ 标准草案在“关键字”部分中说:

此外,表 5 中显示的某些运算符和标点符号 (2.6) 的替代表示是保留的,不得以其他方式使用:

and     and_eq  bitand  bitor  compl   not
not_eq  or      or_eq   xor    xor_eq

但是对于阅读您的代码的任何人来说,可能会有所不同。“逻辑或”的||运算符可以追溯到几十年前。替代表示较新。

它们至少早在 1998 年的 C++ 标准中就被引入了(我不知道 pre-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)

于 2012-08-09T00:07:31.300 回答
1

完全一样,它是一个替代运算符。您可以在此处找到完整列表。

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

于 2012-08-08T23:47:11.553 回答
0

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

于 2018-03-28T15:40:33.557 回答