"or"和"||"的区别

Difference between "or" and "||"

本文关键字:区别 or      更新时间:2023-10-16

之间有什么区别吗

if ( a or b or c ) {

if ( a || b || c ) {

以及更一般地在两个运算符之间,甚至在优先级方面?

除了让许多经验丰富的程序员认为"啊,有人突然开始写Pascal了吗?"的风格感之外,功能上没有区别。

这些替代名称的目的是允许生活在瑞典或德国的人使用ASCII的标准本地变体,其中|ö

自从引入Unicode和扩展ASCII以来,这种需求几乎消失了,因为国有化的字符集不必"窃取"不太常用的字符来产生其国家"特殊"字符。

编辑您可以重载operator or

他们是一样的。

请参见C和C++中的运算符。

如果为某个类型重载operator or,则不能为同一类型重载operator||,因为编译器会认为它们是同一函数。

此错误来自以下代码:

> prog.cpp: In function ‘bool operator||(Type, Type)’:
> prog.cpp:8:6: error: redefinition of ‘bool operator||(Type, Type)’
> prog.cpp:4:6: error: ‘bool operator||(Type, Type)’ previously defined here

在ideaone上:

class Type {}
};
bool operator or(Type lhs, Type rhs) {
    return true;
}
bool operator ||(Type lhs, Type rhs) {
    return false;
}
int main() {
    Type a;
    Type b;
    a or b;
    a || b;
}

根据ISO14882:2011(e)2.6-2(表2),or||的替代令牌,因此具有完全相同的含义:

在语言的各个方面,每个备选标记都表现为除了拼写之外,分别与它的主要标记相同。

编译器通常将它们实现为#define or ||或内部等效程序。

andbitorxorcomplbitandand_eqor_eqxor_eqnotnot_eq相同。

正如在其他答案中所说,两者是相同的,因此是可交换的。但有一个很大的区别:MSVC、C++Builder和其他编译器都不支持or,而不包含特殊的头。这使得使用or成为便携性的障碍。