三合
符号 [ ] { } ^ \ | ~ #
经常用于 C 程序,但在 20 世纪 80 年代后期,使用了代码集(例如,在斯堪的纳维亚国家的 ISO 646 变体),其中 ASCII 字符位置用于国家语言变体字符(例如£
代表英国的 #
; Æ Å æ å ø Ø
代表丹麦的 { } { } | \
; EBCDIC 中没有~
)。这意味着很难在使用这些集合的机器上编写 C 代码。
为了解决这个问题,C 标准建议使用三个字符的组合来产生一个称为三字符的单个字符。三字母是三个字符的序列,前两个是问号。
以下是使用三字符序列而不是 #
,{
和 }
的简单示例:
??=include <stdio.h>
int main()
??<
printf("Hello World!\n");
??>
这将由 C 预处理器通过将三字符替换为单字符等效项来更改,就像代码已写入一样:
#include <stdio.h>
int main()
{
printf("Hello World!\n");
}
三字母组合 | 当量 |
---|---|
‘= | # |
?? / | \ |
??” | ^ |
??( | [ |
??) | ] |
??! | |
?? < | { |
??> | } |
?? - | 〜 |
请注意,三字符是有问题的,因为,例如,??/
是反斜杠并且可以影响注释中连续行的含义,并且必须在字符串和字符文字内部被识别(例如,'??/??/'
是单个字符,反斜杠)。