C语言“字符串的长度”有关一简单问题!

看下列程序
char str[ ]="0123\0456789";
printf("%d",strlen(str));

请问下输出地结果为什么是9.而不是10? 为什么把\045作为一个转义字符来看待? 而不是把把\04作为一个转义字符来看待?

补充题:
字符串“0123\0a456789”和“0123\04a56789”的长度各是多少?

这个 c语言有自己的语法: \ddd 就是反斜杠后面有三位八进制数时当做转义字符看待,

就像补充题: 第一个字符串长度是5 \0 是字符串结束的标志,
第二个字符串长度也是5, \04 后面的a 不是十进制数字所以不会当做转义字符 , 而把\0 当做了字符串结束字符 且 \0 占一个长度
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-12
1.a
2.b
3.
\034
表示八进制34所代表的ascii码字符
4.\\
表示一个\
5.
\x79

表示
16进制79所代表的ascii码字符
所以长度为5

1.a
2.\045
ascii码为八进制45的字符
3.空格
4.0
5.4
6.5
7.\'
表示一个单引号
8.b
第2个回答  2010-04-07
/0xx是8进制要3位数的
相似回答