2
c99 standard  5.2.1.1 Trigraph sequences

2 示例以下源代码行

printf("Eh???/n");

变为(在替换三元组序列后 ??/)

printf("Eh?\n");

据说它会替换三字母序列,但它不是。

正在打印"Eh???/n"

我错过了什么吗?

4

2 回答 2

5

在 gcc 中默认禁用三元组。如果您使用 gcc,则编译-trigraphs以启用三元组:

gcc -trigraphs source.c
于 2012-11-28T07:42:34.820 回答
1

printf 中的??/是一个三元字符,它是 C 预处理器的一部分。

如果使用 启用 trigraph gcc -trigraphs source.c,它将转换??/\. 您的代码将如下所示:

printf("Eh???/n"); // Before enable trigraph

printf("Eh?\n"); // After enable trigraph

您可以访问https://en.wikipedia.org/wiki/Digraphs_and_trigraphs#C了解更多信息。

C ??!??! 的可能重复 运营商呢?

于 2019-11-07T03:31:38.360 回答