【问题标题】:Why are there alternative tokens in C++? [duplicate]为什么 C++ 中有替代标记? [复制]
【发布时间】:2012-09-22 23:09:03
【问题描述】:

可能重复:
Why are there digraphs in C and C++?
What does the C ??!??! operator do?!

在 C++ 中,有 [] 和 {} 等替代标记。

例如以下代码编译:

%:include <stdio.h>
int main() <%
    printf("Hello World!");
}

我想了一会儿,但想不出任何适用性,这有什么合乎逻辑的理由吗?

【问题讨论】:

  • 去找一个旧的终端键盘:)

标签: c++ ansi


【解决方案1】:

它们确实是 C 的后遗症。在 C 的某些实现中,并非所有字符都可用(例如一些没有方括号的 EBCDIC 变体)。

C99 基本原理文档,5.2.1.1 Trigraph sequences 部分有这样的说法:

在 C89 中引入了三字母序列作为某些字符的替代拼写,以允许在不提供足够数量的非字母图形的字符集中实现 C。

C 使用的 ASCII 曲目中和 ISO/IEC 646 不变曲目中不存在的字符是 #[]{}\|~^

【讨论】:

  • 实际上是键盘的问题,而不是字符集的问题。我清楚地记得旧的苹果没有 { 和 } 键。
  • @MrLister:那些可能是缺少小写字母的那些(使得编写 C 特别棘手)。
  • @GregHewgill 真;我并不是要暗示 C 在 Apple 上运行 ][s 反正...
  • 实际上,@MrLister,C99 的基本原理另有说明,它专门针对 ISO646 基线的字符集限制。 Apple 的限制可能很严重 - 尽管没有认真的开发人员在没有 80 列的卡片的情况下工作,它给你的小写字母就好了。无论如何,我记得在 II 上使用文字处理器,其中反字符表示小写。那将是一个丑陋的 C 程序,但它是可行的。
  • @paxdiablo 哦,那些东西很贵。我花了好几年才终于有了一个,因为我真的必须先存钱买第二个软盘驱动器。
猜你喜欢
  • 1970-01-01
  • 2016-10-16
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
  • 2014-08-26
  • 1970-01-01
  • 2020-11-26
  • 1970-01-01
相关资源
最近更新 更多