【问题标题】:C++ and,or,not,xor keywords [duplicate]C ++ and,or,not,xor 关键字[重复]
【发布时间】:2011-01-24 12:29:00
【问题描述】:

可能重复:
The written versions of the logical operators.

我注意到 C++ 定义了关键字 andornotxorand_eqor_eqnot_eqxor_eq 作为 @9876543330@、@9876 的替代@、!^&=|=!=|=。而且很少使用!怎么了?它们不便携吗?

【问题讨论】:

  • 赞成,因为即使这是同一个问题,你的标题对我来说更清楚。 (我偶然发现了not-关键字,但并不知道它的存在。)
  • 至少 Visual Studio 2015 CTP 6 不喜欢 ornot
  • 我的一个问题是我永远记不起and 是指& 还是&&。那么5 and 6 的答案是什么? 4?错了,是1。即使x = 5; x and_eq 6是4。所以我更喜欢&&&。更加一致。
  • @Mr Lister 强烈反对。当您要处理位时,应使用&|,而当您打算编写布尔条件时,应使用andornot。生成更多干净的代码
  • @Ichthyo:他有一个有效的论点,即 &= 的替代名称应该是 bitand_eq 而不是 and_eq

标签: c++ operators


【解决方案1】:

它们来自 C AFAIR,当时还不知道键盘上有什么特殊符号。因此,为了拥有可移植语言,它们被定义为任何人都可以使用 C,即使他们使用没有 &|^ (等)的键盘。

如今,当 QWERTY 成为标准(AZWERTY & co. 作为变体)时,它不再是问题。

附言。当然还有混淆代码竞赛;)

【讨论】:

  • PPS。要开始讨论一致性,请参阅 and_eqbitand ;)
  • 它们在哪个标头或标准中定义???曾几何时,我使用MSVC 2010 并最终定义了我自己的not 等等......
  • @Top-Master 我认为它们是作为关键字语法的一部分?
  • 谢谢!我在某处发现以前 <iso646.h> 用于 C<ciso646> 用于 C++ 需要包含(虽然 MSVC 不支持),而现在可能因为 C++17 及更高版本,它们是替代令牌(没有任何#define)。
猜你喜欢
  • 1970-01-01
  • 2011-07-14
  • 2018-03-08
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
  • 2013-10-12
  • 2018-11-18
  • 1970-01-01
相关资源
最近更新 更多