什么是 `&|` 运算符,它来自哪里?
what is the `&|` operator and where does it come from?
大约在 this page 的中途,有一个 "Restrictions" 部分指出:"New operators such as **
, <>
, or &|
cannot be created".
我知道 **
是 python 的求幂运算符,我知道 <>
是 PHP 的 "spaceship" (compareTo)运算符. &|
到底是什么?
更正 <=>
是 "spaceship",<>
是 !=
的常见替代品
&|的唯一用法被称为:位运算符..
它不是用在编程语言中,而是用来表达一些东西……比如:我想知道结果 and/or (&|) 是否匹配某物..
该页面试图说明的是,您无法在 C++ 中创建尚不存在的运算符。换句话说,<>
不是今天 C++ 中的运算符,因此您不能通过 T operator<>(U x, U y)
来定义此运算符的作用。这是一个无效的组合。对于列出的其他 "symbols" 也是如此。 C++ 定义了一组给定的运算符,+
、-
、%
、/
、*
、<<
、>>
和还有很多。这些被允许覆盖(使用用户定义的类型)。但是该语言不允许程序员发明 his/her 自己的符号并将它们变成运算符。
这有一组在词法上定义明确的固定运算符,有助于代码的解析。这不包括当您阅读
时这会引起的混淆
if (x <&^> y) ...
或
x = y +- 11;
[<&^>
或 +-
到底是什么意思?]
当然,这也可能导致与现有运算符的混淆,但它至少比程序员编写 his/her 自己的版本和变体更容易混淆。
某些其他语言确实对其他符号有意义这一事实取决于那些语言。直到该符号在 C++ 中可用(并且有时会引入一些新的运算符,尽管很少见),它们作为 C++ 运算符是无效的。
大约在 this page 的中途,有一个 "Restrictions" 部分指出:"New operators such as **
, <>
, or &|
cannot be created".
我知道 **
是 python 的求幂运算符,我知道 <>
是 PHP 的 "spaceship" (compareTo)运算符. &|
到底是什么?
更正 <=>
是 "spaceship",<>
是 !=
&|的唯一用法被称为:位运算符..
它不是用在编程语言中,而是用来表达一些东西……比如:我想知道结果 and/or (&|) 是否匹配某物..
该页面试图说明的是,您无法在 C++ 中创建尚不存在的运算符。换句话说,<>
不是今天 C++ 中的运算符,因此您不能通过 T operator<>(U x, U y)
来定义此运算符的作用。这是一个无效的组合。对于列出的其他 "symbols" 也是如此。 C++ 定义了一组给定的运算符,+
、-
、%
、/
、*
、<<
、>>
和还有很多。这些被允许覆盖(使用用户定义的类型)。但是该语言不允许程序员发明 his/her 自己的符号并将它们变成运算符。
这有一组在词法上定义明确的固定运算符,有助于代码的解析。这不包括当您阅读
时这会引起的混淆 if (x <&^> y) ...
或
x = y +- 11;
[<&^>
或 +-
到底是什么意思?]
当然,这也可能导致与现有运算符的混淆,但它至少比程序员编写 his/her 自己的版本和变体更容易混淆。
某些其他语言确实对其他符号有意义这一事实取决于那些语言。直到该符号在 C++ 中可用(并且有时会引入一些新的运算符,尽管很少见),它们作为 C++ 运算符是无效的。