我刚读过这个nice piece来自 Reddit。
他们提到 and
和 or
是 &&
和 ||
的“替代标记”
直到现在我才真正意识到这些。 di-graphs and tri-graphs当然大家都知道了,但是 和
和 或
?从何时起?这是标准中最近添加的内容吗?
我刚刚用 Visual C++ 2008 对其进行了检查,它似乎没有将这些识别为语法错误以外的任何内容。怎么回事?
最佳答案
从 第一个 ISO C++ 标准 C++98
开始,这在 2.5/Alternative tokens [lex.digraph]
中有描述:
- 为某些运算符和标点符号提供了替代标记表示。
- 在语言的所有方面,每个替代标记的行为分别与其主要标记相同,但拼写除外。表 2 中定义了一组替代标记。
Table 2 - Alternative tokens
alternative primary | alternative primary | alternative primary
--------------------+---------------------+--------------------
<% { | and && | and_eq &=
%> } | bitor | | or_eq |=
<: [ | or || | xor_eq ^=
:> ] | xor ^ | not !
%: # | compl ~ | not_eq !=
%:%: ## | bitand & |
所以它从 C++ 标准化过程的早期就存在了。很少有人知道它的原因可能是因为主要用例是针对在不一定可用完整字符集的环境中操作的人员。例如(这让我内存犹新),IBM 大型机上的基线 EBCDIC 字符集没有方括号字符 [
和 ]
。
关于c++ - C++ 何时引入了 'and' 和 'or' 替代标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24170531/