c++ - C++ 何时引入了 'and' 和 'or' 替代标记?

标签 c++ syntax keyword digraphs trigraphs

我刚读过这个nice piece来自 Reddit。

他们提到 andor&&|| 的“替代标记”

直到现在我才真正意识到这些。 di-graphs and tri-graphs当然大家都知道了,但是 ?从何时起?这是标准中最近添加的内容吗?

我刚刚用 Visual C++ 2008 对其进行了检查,它似乎没有将这些识别为语法错误以外的任何内容。怎么回事?

最佳答案

第一个 ISO C++ 标准 C++98 开始,这在 2.5/Alternative tokens [lex.digraph] 中有描述:


  1. 为某些运算符和标点符号提供了替代标记表示。
  2. 在语言的所有方面,每个替代标记的行为分别与其主要标记相同,但拼写除外。表 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/

相关文章:

mysql - 添加列并更改表错误

visual-studio-2010 - 如何让 VS 2010 识别某些 CUDA 功能

c++ - 是否可以在 vb.net 代码中使用 C++ 类?

c++ - AT命令响应解析器

c++ - C++ 函数的自动 C 包装器

C++ 获取 map 的关键字

seo - 页面标题中的网站名称或 sitename.com?

c++ - 为另一个 dll 导出静态成员

python - 如何解决未在 Python 中全局定义的 'self' 上的导入错误?

javascript - 无法使用 Graphql 删除帖子