为什么C++中会有替代标记?

3
在C++中,[]和{}等符号有替代的标记。
例如,以下代码可以编译通过:
%:include <stdio.h>
int main() <%
    printf("Hello World!");
}

我考虑了一段时间,但无法确定任何适用性,这里是否有任何逻辑原因?


1
去找一把旧的终端键盘 :) - Ed S.
1个回答

7
他们实际上是C语言的副产品。在一些C语言实现中,并不是所有字符都可用(例如某些没有方括号的EBCDIC变体)。
C99理由文档第5.2.1.1节“三字符序列”中这样说:
三字符序列被引入C89作为一些字符的备选拼写,以允许在不提供足够数量的非字母图形字符集中实现C。
C使用的ASCII字符集中缺少ISO/IEC 646不变字符集中的字符有 #、[、]、{、}、\、|、~ 和 ^。

3
实际上,这是键盘的问题,而不是字符集的问题。我清楚地记得早期的苹果电脑没有 { 和 } 键。 - Mr Lister
@MrLister:那些可能是缺少小写字母的同类(使得编写C语言特别棘手) 。 - Greg Hewgill
@GregHewgill 是的,我并不是想暗示C语言可以在Apple ][上运行... - Mr Lister
实际上,@MrLister,C99的理由说明与此相反,它是专门针对ISO646基线的字符集限制而设计的。苹果的限制可能非常严重 - 尽管没有严肃的开发人员会在没有80列卡的情况下工作,这可以很好地提供小写字母。无论如何,我记得在II上使用文字处理器,其中反转字符代表小写字母。那将是一个丑陋的C程序,但是它是可行的。 - paxdiablo
@paxdiablo 哦,那些东西很贵。我花了好几年时间才终于有了一个,因为我真的得先省钱买第二个软盘驱动器。 - Mr Lister

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接