黑马程序员技术交流社区

标题: 小问题~~ [打印本页]

作者: yll    时间: 2016-1-15 20:18
标题: 小问题~~
  char str[]="ab\013\r\082\\\"";
    printf("%lu\n",strlen(str));


Xcode里运行结果是 4   不懂 求解释
作者: yll    时间: 2016-1-15 20:34
额 我好想懂了 八进制转义字符~~
作者: 一步步往上爬    时间: 2016-1-16 00:12
这个就是字符串的问题 遇到\0结束 无论你是否在末尾添加\0 系统都会默认的添加\0 所以运行结果是4
作者: 一步步往上爬    时间: 2016-1-16 00:13
这个就是字符串的问题 ,遇到\0结束, 无论你是否在末尾添加\0, 系统都会默认的添加\0, 所以运行结果是4
作者: JC小子    时间: 2016-1-16 00:34
\0就结束了
作者: yll    时间: 2016-1-20 18:18
一步步往上爬 发表于 2016-1-16 00:12
这个就是字符串的问题 遇到\0结束 无论你是否在末尾添加\0 系统都会默认的添加\0 所以运行结果是4 ...

第一个字符是 a 第二个是 b第三个字符是八进制转义字符 \013 第四个是转义字符\r 然后遇到\0停止 这么理解对么
作者: 水丹青    时间: 2016-1-20 21:31
为什么不能看成是 \0 和13?
作者: yll    时间: 2016-1-22 09:12
水丹青 发表于 2016-1-20 21:31
为什么不能看成是 \0 和13?

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

还有就是 strlen 是不会计算\0的 ~~~
作者: guyuexing    时间: 2016-1-22 11:40
学习了,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2