千家信息网

C语言的三字符组有哪些

发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,这篇文章主要讲解了"C语言的三字符组有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言的三字符组有哪些"吧!见证"奇迹"#include #
千家信息网最后更新 2024年12月12日C语言的三字符组有哪些

这篇文章主要讲解了"C语言的三字符组有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言的三字符组有哪些"吧!

见证"奇迹"

#include  #include  int main(void) {     int a = (int)sqrt(30);     //is sqrt(30) + 1 > 5 ??/     //故意让a++,你别管为什么    a++;    if(a > 5)        printf("sqrt(30) +1 > 5 \n");    else    {        printf("sqrt(30) +1 <= 5 \n");    }    return 0;

编译运行:

$ gcc -o main main.c -trigraphs $ ./main sqrt(30) +1 > 5

作为受过九年义务教育的我们,一看就知道结果是对的,毕竟 5 * 5 < 30 < 6 * 6。

但是删掉第九行,再运行:

$ ./main sqrt(30) +1 <= 5

结果竟然变了!!

看到这里,细心的读者可能已经发现了其中的端倪,我也就不卖关子了。接下来就说说我们本次要提到的主角-三字符组(trigraph sequences)。

三字符组

我们都知道C语言里面有很多转义符号,例如:

\n 换行符(LF) \r 回车符(CR) \t 水平制表符(HT) \b 退格符(BS) \’ 单引号 \" 双引号 \\ 反斜杠 ......

当然还有很多,我就不一一列举了。这些符号在代码中都有特别的作用,或者无法直接输入,因此用转移符+其他字符组合来代替。

同样的,早期的一些键盘可能没法输入一些特殊的符号,如:

# $ @ [ \ ] ^ ` { | } ~

于是,为了解决这个问题C语言标准规定预处理器(C preprocessor)在扫描处理C语言源文件时,替换下述的3字符出现为1个字符:

也就是说,??/会被替换为\,如果删掉原先的第九行,就变成了:

//is sqrt(30) + 1 > 5 \ a++;

我们都知道,\的存在(通常一行代码太长,可以通过该符号来换行),使得上面看似两行,实则是一行。即变成了:

//is sqrt(30) + 1 > 5 a++;

也就是说,a++根本不会执行了,当然会导致最终结果不符合预期。

当然了,很多现代编译器可能并不会做这样的替换,所以这样的问题也基本无需担心,老实用原本的符号即可。

实际上,细心的读者可能观察到了,我在前面例子代码中加了编译选项-trigraphs,否则的话,编译是有警告的:

$ gcc -o main main.c main.c: In function ‘main’: main.c:6:27: warning: trigraph ??/ ignored, use -trigraphs to enable [-Wtrigraphs]      //is sqrt(30) + 1 > 5 ??/

双字符组

除了三字符组,还有双字符组。

感谢各位的阅读,以上就是"C语言的三字符组有哪些"的内容了,经过本文的学习后,相信大家对C语言的三字符组有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

语言 三字 字符 符号 编译 代码 结果 问题 学习 细心 一行 也就是 也就是说 内容 引号 读者 输入 运行 特殊 一一列举 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 xmpp为什么连接数据库失败 绝地求生未来之翼不上服务器 sql在数据库中指的是 高斯数据库 字符串函数 网络文明网络安全手抄报 基于网络安全设计与实施 软件开发人员技术评价 供应性能稳定的数据库服务器 电子软件开发需要掌握什么 我的世界服务器中文版 服务器的log 高清电视墙服务器 建设工程项目文件服务器多少钱 软件开发公司技术服务网站 在服务器上动态部署网页 网络安全教育案例分析2000字 计算机3级网络技术都考什么 江西互联网养老软件开发公司 网络安全等级保护三级认证价格 新华社区网络安全培训会 国内基岩版服务器ip 湖南联想服务器续保维护 5g蜂窝通信网络技术参数 软件开发资质种类要求 全过程网络安全工程收费 中娱网络技术有限公司 sap服务器安全证书 安徽正规网络技术开发范围 相亲软件开发的风险 北京it 软件开发java
0