C ++ and,or,not,xor 关键字[重复]
Posted
技术标签:
【中文标题】C ++ and,or,not,xor 关键字[重复]【英文标题】:C++ and,or,not,xor keywords [duplicate] 【发布时间】:2011-01-24 12:29:00 【问题描述】:可能重复:The written versions of the logical operators.
我注意到 C++ 定义了关键字 and
、or
、not
、xor
、and_eq
、or_eq
、not_eq
和 xor_eq
作为 @9876543330@、@9876 的替代@、!
、^
、&=
、|=
、!=
和 |=
。而且很少使用!怎么了?它们不便携吗?
【问题讨论】:
赞成,因为即使这是同一个问题,你的标题对我来说更清楚。 (我偶然发现了not
-关键字,但并不知道它的存在。)
至少 Visual Studio 2015 CTP 6 不喜欢 or
或 not
。
我的一个问题是我永远记不起and
是指&
还是&&
。那么5 and 6
的答案是什么? 4?错了,是1。即使x = 5; x and_eq 6
是4。所以我更喜欢&
和&&
。更加一致。
@Mr Lister 强烈反对。当您要处理位时,应使用&
和|
,而当您打算编写布尔条件时,应使用and
、or
和not
。生成更多干净的代码
@Ichthyo:他有一个有效的论点,即 &=
的替代名称应该是 bitand_eq
而不是 and_eq
。
【参考方案1】:
它们来自 C AFAIR,当时还不知道键盘上有什么特殊符号。因此,为了拥有可移植语言,它们被定义为任何人都可以使用 C,即使他们使用没有 &
、|
或 ^
(等)的键盘。
如今,当 QWERTY 成为标准(AZWERTY & co. 作为变体)时,它不再是问题。
附言。当然还有混淆代码竞赛;)
【讨论】:
PPS。要开始讨论一致性,请参阅and_eq
与 bitand
;)
它们在哪个标头或标准中定义???曾几何时,我使用MSVC 2010
并最终定义了我自己的not
等等......
@Top-Master 我认为它们是作为关键字语法的一部分?
谢谢!我在某处发现以前 <iso646.h>
用于 C
或 <ciso646>
用于 C++
需要包含(虽然 MSVC
不支持),而现在可能因为 C++17
及更高版本,它们是替代令牌(没有任何#define
)。以上是关于C ++ and,or,not,xor 关键字[重复]的主要内容,如果未能解决你的问题,请参考以下文章
delphi 按位运算 not and or xor shl shr
Python 逻辑代码:AND、NAND、OR、NOR、XOR、XNOR 和 NOT 模拟
(32位汇编 五)mov/add/sub/and/or/xor/not