是否可以使用"和","或"等而不是"&&","||"?

rhi*_*ino 24 c++ standards operators

我习惯了C++中的andor关键字.我总是使用它们,打字它们对我来说既快又舒服.一旦我听说这些别名是非标准的,可能不适用于所有编译器.但我不确定,我真的不知道这是不是真的.
我们假设我给某人代码,编译时会有问题吗?
可以吗,当我用and,or而不是&&,||?或者这些关键字真的不标准吗?
PSI使用MinGW编译器.

In *_*ico 28

它们实际上是C++中的标准,正如ISO 14882:2003 C++标准2.5/2所定义的那样(实际上,正如1998年版标准所定义的那样).请注意,它们内置于语言本身,并不要求您包含某种类型的头文件.

但是,它们很少使用,我还没有看到实际使用替代令牌的生产代码.替代令牌首先存在的唯一原因是因为某些键盘上的这些字符(特别是非QWERTY键盘)要么不存在要么笨拙要键入.它仍然是向后兼容性的标准.

即使它们是标准的,我强烈建议您不要使用它们.替代标记需要输入更多字符,QWERTY键盘布局已经具有输入C++代码所需的所有字符,而无需使用替代标记.此外,他们很可能会对您的代码感到困惑.

2.5/2替代代币

在语言的所有方面,除了拼写之外,每个备选令牌的行为分别与其主令牌相同.表2中定义了替代令牌集.

Table 2 - alternative tokens
+--------------+-----------+
| Alternative  |  Primary  |
+--------------+-----------+
|    <%        |    {      |
|    %>        |    }      |
|    <:        |    [      |
|    :>        |    ]      |
|    %:        |    #      |
|    %:%:      |    ##     |
|    and       |    &&     |
|    bitor     |    |      |
|    or        |    ||     |
|    xor       |    ^      |
|    compl     |    ~      |
|    bitand    |    &      |
|    and_eq    |    &=     |
|    or_eq     |    |=     |
|    xor_eq    |    ^=     |
|    not       |    !      |
|    not_eq    |    !=     |
+--------------+-----------+

  • @In silico:在使用Python一段时间之后,你会发现使用一些乱七八糟的`&&`而不是一个简单的单词是愚蠢的.键入`bitand`而不是`和`比键入`&`而不是`&&`更难,坦率地说我确实认为它在可读性上有所提高.我仍然无法理解为什么人们坚持使用尽可能奇怪的操作员,真的让我想起1337说话.也就是说,我确实在工作中使用乱码版来符合"规范". (8认同)
  • 我尝试并开发了使用这些关键字的首选项,并且当我不需要可移植性到不提供它们的愚蠢编译器时这样做.显然,C++会不时地引入新的关键字......可以合理地命令行开关来禁用它们,但它们应默认为打开.MS的肮脏举动. (3认同)
  • @In silico:在考虑它之前,我不会等待一些教程或书籍使用语言功能.打字更多?键入"and"比shift-6-6更容易,"或"与"||"一样短.我应该担心卡萨布兰卡不同意吗?当他们将标准添加到标准中时,他是否知道委员会没有的内容?你如何如此自信地说没有人使用它们,更不用说没有人会使用它们如果MS没有使它成为可移植性问题? (2认同)
  • @Tony @Matthieu M:我们之所以拥有这些"怪异"符号,是因为我们经常使用这些符号,因此提出这些运算符是合理的.就像数学一样,我们对数学方程使用"奇怪的"符号,因为写出`f(x)= 2(x + 1)`比写出`x的函数等于两次'要容易得多x和1的总和.我们之所以不尝试使用英语来模拟编程语言是有原因的. (2认同)

Edw*_*nge 8

这些关键字是标准的,并在标准的第2.5节中描述.表2是这些"替代令牌"的表格.您可以随心所欲地使用它们,即使每个人都会讨厌你.


Act*_*lis 5

它们是新c ++ 0x标准的标准配置.最新的现代编译器应该认识到它们,尽管我认为它们还没有义务.无论你的船是什么漂浮,我都认为.

  • 它们不是在 0x 中添加的,它们一直存在。 (2认同)