C 源程序源字符集在 7 位 ASCII 字符集中包含,但设置为 ISO 646-1983 固定的代码的超集。 三字符序列允许 C 程序编写使用 " 仅 ISO (国际标准组织的固定的代码。 对于是编译器会被替换为相应的标点符号替换三个字符的序列 (引入了两个连续的问号)。 在 C 对未包含某些标点字符的便捷图形表示的字符集的源文件中使用三字符组。
下表显示了三个序列。 在标点符号的源文件的所有匹配项在第一列中用第二列的相应字符。
三字符组 |
标点符号 |
---|---|
??= |
# |
??( |
[ |
??/ |
\ |
??) |
] |
??' |
^ |
?? AMP_LT |
{ |
??! |
| |
?? AMP_GT |
} |
??- |
~ |
三字符组始终被视为单个源字符。 对于的转换在第一 转换阶段发生,在转义字符的标识之前在字符串和字符常数的。 在上表中显示的九只会被识别。 其他字符序列未呈现。
字符转义序列, \?,防止与三字符组的字符序列的误会。 有关转义序列的信息, (,请参见 转义序列。)例如,在中,如果尝试打印与此 printf 语句的字符串 What??!
printf( "What??!\n" );
打印的字符串是 What| ,因为 ??! 是用替换的三字符组顺序|字符。 请按如下方式编写语句正确打印字符串:
printf( "What?\?!\n" );
本 printf 语句,在第二个问号的前面个反斜杠转义符防止 ??! 的误会为三字符组。