A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yll 中级黑马   /  2016-1-15 20:18  /  1342 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  char str[]="ab\013\r\082\\\"";
    printf("%lu\n",strlen(str));


Xcode里运行结果是 4   不懂 求解释

10 个回复

倒序浏览
额 我好想懂了 八进制转义字符~~
回复 使用道具 举报
这个就是字符串的问题 遇到\0结束 无论你是否在末尾添加\0 系统都会默认的添加\0 所以运行结果是4
回复 使用道具 举报
这个就是字符串的问题 ,遇到\0结束, 无论你是否在末尾添加\0, 系统都会默认的添加\0, 所以运行结果是4
回复 使用道具 举报
\0就结束了
回复 使用道具 举报
一步步往上爬 发表于 2016-1-16 00:12
这个就是字符串的问题 遇到\0结束 无论你是否在末尾添加\0 系统都会默认的添加\0 所以运行结果是4 ...

第一个字符是 a 第二个是 b第三个字符是八进制转义字符 \013 第四个是转义字符\r 然后遇到\0停止 这么理解对么
回复 使用道具 举报
为什么不能看成是 \0 和13?
回复 使用道具 举报
yll 中级黑马 2016-1-22 09:12:25
8#
水丹青 发表于 2016-1-20 21:31
为什么不能看成是 \0 和13?

我自己 拿Xcode试来着  \013就是八进制的转义字符 如果拆开的话 运行结果是2 可是运行结果是4   而且后面的\082不能再看成一个转义字符是因为八进制最大是7 而十六进制又不能有三位数字 所以它既不是八进制转义字符也不是十六进制转义字符 所以看做\0  然后结束 百度有很多类似的题 都跟转义字符有关 不知道我这么说 你能懂么0.0
回复 使用道具 举报
所以并不是太难
回复 使用道具 举报
yll 中级黑马 2016-1-22 10:56:58
10#
yll 发表于 2016-1-22 09:12
我自己 拿Xcode试来着  \013就是八进制的转义字符 如果拆开的话 运行结果是2 可是运行结果是4   而且后面 ...

还有就是 strlen 是不会计算\0的 ~~~
回复 使用道具 举报
guyuexing 来自手机 中级黑马 2016-1-22 11:40:55
11#
学习了,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马