为什么有C和C++中的有向图?

Why are there digraphs in C and C++?

今天我学到了C99和C++中的有向图。以下是有效的程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
%:include <stdio.h>

%:ifndef BUFSIZE
 %:define BUFSIZE  512
%:endif

void copy(char d<::>, const char s<::>, int len)
<%
    while (len-- >= 0)
    <%
        d<:len:> = s<:len:>;
    %>
%>

我的问题是:它们为什么存在?


有向图是为没有支持ISO 646字符集的键盘的程序员创建的。

http://en.wikipedia.org/wiki/c_Trigraph(维基百科)


我相信,它们的存在可以追溯到某个地方,有人使用一个编译器,操作系统的字符集是如此古老,以至于它不一定有C或C++所需要的所有字符来表达整个语言。

此外,它还可以在IOCC中创建良好的条目。


我认为这是因为这个星球上的一些键盘可能没有像""和""这样的键。


C/C++中的有向图和三叉图来自CDC6000(60位)、UNIVAC 1108(36位)、DECPLASE 10和20系统(36位)所使用的六位字符集的每一天,每一个都使用专有的64字符集,不兼容ASA X3.4-1963(现在称为ANSI X3.4-1963)7位美国信息标准国家间代码。更改""。最新版本为ANSI X3.4-1986。由于这些系统无法表示96个图形代码点中的所有代码点,因此省略了许多代码点。此外,X3.4与其他国家标准机构(GBR、GER、ITA等)进行了协调,在X3.4中有代码点被指定为国家替换字符-最明显的例子是英国镑符号(很明显,因为在美国公司中,该字符的名称是"镑符号")。商业-在Twitter发展之前)和""""也被指定为国家替换字符。因此,引入了有向图,为那些不能表示字符的计算机系统提供了一种机制,也为数据终端设备提供了一种机制,这些设备将国家替换字符分配给相互冲突的代码点。Di/Tri图形已经成为计算历史的古老产物(这是计算机科学领域目前没有教授的一门学科)-关于这门学科的详尽论文可以在这里找到:http://citeserx.ist.psu.edu/viewdoc/download?doi=10.1.1.96.678&rep=rep1&type=pdf