前言
在ANSI标准中,定义了“三字母词”,或者成为“三联符序列”(“trigraph sequences”)。主要是为了在一些特定的字符集中,比如一些七位代码集中,解决一些特定字符的输入问题。现在的编译器基本已经不支持“三字母词”了,只有在早期的一些编译器里边还存在这种转义的方式。
正文
在ANSI C标准中,三字母词就是几个字符的序列,合起来表示另一个字符。 截止到现在,“三字母词”有且仅有9个,分别为:
源代码中的“三字母词”,在编译阶段会被替换为对应的字符。对于以“?”
开头的字符序列,如果不能与上面9个匹配,编译器将保持原状;一旦匹配,编译器就会做替换。 下面是我们很容易犯的一个错误,如果我们想在屏幕上输出字符串"(are you ok??)",代码如下:
printf("%s\n", "(are you ok??)");
结果却为:
因为这里的‘??)’
会转换成三字母词中的‘]’
符号,那到底如何才能打印出我们想要的字符串呢?方法也很简单在' ?'
前边将一个'\'
,使得三字母符号?转义成真正的符号' ?'
了,代码如下:
printf("%s\n", "(are you ok\?\?\)");
结果正确,是我想要打印的字符串:
这篇文章就是扩充一下大家的知识储备的,讲到就是三字母词。
这份博客👍如果对你有帮助,给博主一个免费的点赞以示鼓励欢迎各位🔎点赞👍评论收藏⭐️,谢谢!!!
如果有什么疑问或不同的见解,欢迎评论区留言欧👀。