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

n3ipq98p  于 2023-03-25  发布在  其他
关注(0)|答案(5)|浏览(121)

我今天学习了C99和C++中的有向图。下面是一个有效的程序:

%: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:>;
    %>
%>

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

lnxxn5zx

lnxxn5zx1#

有向图是为没有支持ISO 646字符集的键盘的程序员创建的。
http://en.wikipedia.org/wiki/C_trigraph

ttp71kqs

ttp71kqs2#

我相信它们的存在可以追溯到某个地方的可能性,有人正在使用一个操作系统的编译器,其字符集是如此古老,以至于它不一定具有C或C++表达整个语言所需的所有字符。
此外,它也是IOCCC中的好条目。

bvuwiixz

bvuwiixz3#

我想这是因为这个星球上的一些键盘可能没有像“#”和“|”这样的键。

r9f1avp5

r9f1avp54#

C/C++中的有向图和三向图来自CDC 6000使用六位字符集的时代(60位),Univac 1108(36位),DEC系统10和20系统(36位),每个都使用与阿萨X3.4-1963不兼容的专有64字符集(现在称为ANSI X3.4-1963“7位美国国家信息交换标准代码”)。最新修订版是ANSI X3.4-1986。
由于这些系统不能表示所有的96个图形代码点,许多被省略了。另外,X3.4与其他国家标准研究所协调(英国、格尔、意大利、等),并且在X3.4中有一些代码点被指定为国家替换字符-最明显的例子是#表示英国磅符号(很明显,因为#字符的名称是“磅符号”,这是在Twitter发展之前美国商业中的传统用法)和“{”}也被指定为国家替换字符。
因此,引入了二合图,为那些不能表示字符的计算机系统提供了一种机制,也为数据终端设备分配了国家替换字符到冲突的代码点。Di/Tri-graphs已经成为计算历史上的一个古老的人工制品(这些天在计算机科学中没有教授的主题)。
关于这个主题的详尽论文可以在这里找到:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.96.678&rep=rep1&type=pdf

toiithl6

toiithl65#

根据维基百科上的文章,它们被创建为三字母的更简单的替代品。
即,对于5个三合图??(??)??<??>??=,提供替换有向图:<::><%%>%:。这发生在1994年。

相关问题