关于ansi C的奇怪的三字形序列事

时间:2011-09-11 04:54:58

标签: c chars trigraphs

使用某些字符的三字符序列成为ansi C中的其他字符的原因是什么:

??=define arraycheck(a, b) a??(b??) ??!??! b??(a??)

变为

#define arraycheck(a, b) a[b] || b[a]

2 个答案:

答案 0 :(得分:4)

简答:键盘/字符编码不包含此类图表。

来自维基百科:

  

C编程语言的基本字符集是ASCII字符集的超集,其包括位于ISO 646不变字符集之外的九个字符。当使用的键盘不支持这九个字符中的任何一个时,这会对编写源代码造成问题。 ANSI C委员会发明了三字母作为使用支持任何版本的ISO 646字符集的键盘输入源代码的一种方式。

http://en.wikipedia.org/wiki/Digraphs_and_trigraphs

答案 1 :(得分:1)

一些旧的键盘上没有特定的字符,所以语言通过让你使用三角形来解决它。