“ and_eq”和“&=”之间有什么区别?

时间:2018-11-09 01:46:11

标签: c++ bitwise-operators

我一直在查看the c++ reference site,并且偶然发现this article关于and_eq关键字。这篇文章说:

  

替代运算符:作为&=

的替代

关于and_eq运算符。我找不到关于and_eq&=之间的区别的任何在线信息。它与&=运算符完全相同,还是有所不同?如果有区别,我应该何时使用它们?

2 个答案:

答案 0 :(得分:3)

如果您在链接的页面上单击“ alternative operators”链接,则会看到以下文本:

  

一些使用非ISO646字符的运算符和其他标记具有替代的拼写。 在语言的所有方面,每个替代标记的行为都与其主要标记完全相同,除了其拼写方式(字符串化运算符可以使拼写可见)。两个字母的替代标记有时也称为“有向图”

请注意,某些编译器默认情况下是非标准的,并且不允许使用替代拼写,因此您将强制执行标准合规性模式以使用替代拼写,或者仅使用主要拼写。 / p>

答案 1 :(得分:0)

如果您#include <iso646.h>定义了替代运算符(至少在我的Visual Studio 2017机器上),则实际上是同一件事:

  #define and_eq    &=
  #define bitand    &
  #define bitor |
  #define compl ~
  #define not   !
  #define not_eq    !=
  #define or        ||
  #define or_eq |=
  #define xor   ^
  #define xor_eq    ^=