[C]转义字符的探究
2019-05-20 23:06
127 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ranjiahao_study/article/details/90384178
转义字符顾名思义就是转变意思的字符
有这样一组代码
printf("%lu\n", strlen("\377")); // 1 printf("%lu\n", strlen("\378")); // 2 printf("%lu\n", strlen("\387")); // 3 printf("%lu\n", strlen("\0377")); // 2 printf("%lu\n", strlen("\0378")); // 2 printf("%lu\n", strlen("\0387")); // 3 printf("%lu\n", strlen("\0837")); // 0
显然我们用strlen计算长度输出结果往往不是那么直白,所以我们借助linux系统的vim代码高亮来观察这一现象
我们可以清楚的看到这之间的区别,strlen中粉色部分成了一个单独的字符,那么问题来了,为什么会产生这样的结果?我们知道一个字节8个bit最大能表示范围为:0~255,而\ddd的意思是1到3位八进制数所代表的任意字符,最大范围是0~377(八进制)所以\377在范围之内,编译器就认为它是一个字符;
因为八进制中没有8,所以\378就被当成’\37’和’8’两个字符;
同理,\387表示’\3’ ‘8’ ‘7’三个字符;
\0377表示’\037’ ‘7’两个字符;
\0378表示’\037’ ‘8’两个字符;
\0387表示’\03’ ‘8’ ‘7’三个字符
需要注意的是最后一个\0837由于第二个数字是8所以第一个字符是’\0’,刚好是字符串结尾的标志,strlen的输出出结果就是0
相关文章推荐
- 转义字符的小探究、、
- 模板函数初步探究1
- 计算机网络探究(三) TCP和HTTP的keepAlive
- 开发人员致富捷径 探究九大云开发平台
- super探究
- [zz]Linux Cache 机制探究
- 探究iOS多线程究竟不安全在哪里?
- String 中的转义字符‘\r\n’在用EMAIL发出来后发现在OUTLOOK中没起作用
- 歌曲光辉岁月和弦走向探究
- 探究Struts2运行机制:StrutsPrepareAndExecuteFilter 源码剖析
- HTML转义字符
- .net中的转义字符 /和@的关系,及几个特殊的转义字符
- 关于Picasso load本地图片显示失败的探究
- HTML学习笔记_003_标题大小的使用和转义字符
- Java程序运行机制及cmd编译运行探究(三) 测试类运行jar包
- iOS中注册功能的体验探究
- 第 4 章 探究碎片
- 实拍比亚迪e6,探究ET-POWER铁电池技术(图集)
- 探究Docker 1.13 存储插件和Propagated Mounts
- C && Shell利用转义字符输出彩色字体