三合

符号 [ ] { } ^ \ | ~ # 经常用于 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");
}
三字母组合 当量
‘= #
?? / \
??” ^
??( [
??) ]
??!
?? < {
??> }
?? -

请注意,三字符是有问题的,因为,例如,??/是反斜杠并且可以影响注释中连续行的含义,并且必须在字符串和字符文字内部被识别(例如,'??/??/'是单个字符,反斜杠)。