三合
符号 [ ] { } ^ \ | ~ # 经常用于 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");
}
| 三字母组合 | 当量 |
|---|---|
| ‘= | # |
| ?? / | \ |
| ??” | ^ |
| ??( | [ |
| ??) | ] |
| ??! | |
| ?? < | { |
| ??> | } |
| ?? - | 〜 |
请注意,三字符是有问题的,因为,例如,??/是反斜杠并且可以影响注释中连续行的含义,并且必须在字符串和字符文字内部被识别(例如,'??/??/'是单个字符,反斜杠)。