"or"和"||"的区别
Difference between "or" and "||"
之间有什么区别吗
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 ||
或内部等效程序。
与and
、bitor
、xor
、compl
、bitand
、and_eq
、or_eq
、xor_eq
、not
和not_eq
相同。
正如在其他答案中所说,两者是相同的,因此是可交换的。但有一个很大的区别:MSVC、C++Builder和其他编译器都不支持or
,而不包含特殊的头。这使得使用or
成为便携性的障碍。
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- C++ - "!pointer"和"pointer == nullptr"的区别?
- 瓦尔格林德:数学函数"Conditional jump or move depends on uninitialised value(s)"
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 在 const 函数中通过引用和指针返回之间的区别
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 我想知道长双倍和双倍之间的区别
- 返回常量对象引用 (getter) 和仅返回字符串有什么区别?
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 返回递归调用和仅递归调用的区别
- Qt:remove() 和 rmdir() 有什么区别
- 这 4 个 lambda 表达式之间有什么区别?
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- STL队列(OR堆栈)的deque和链表(+vector)实现之间有什么区别
- "or"和"||"的区别