c 语言问题 main()

来源:百度知道 编辑:UC知道 时间:2024/06/30 08:54:49
main()
{ char st[16]="123456\0abcdef";
printf("%d %d %s\n",stelen(st),size(st),st);
}
的结果,和结果的详细过程,谢谢了
若是
main()
{ char st[20]="123456\012\03\0re";
printf("%d %d %s\n",stelen(st),size(st),st);
}
又为什么不把第一个\0当成结束符而是当成一个八进制字符呢?

运行结果:6 16 123456

strlen是字符串的长度,从首字符开始到\0结束,共有6个,所以是6
sizeof是编译时候决定的,所以char[16]的大小就是16
最后打印st,碰到\0就结束
-----------------------------------------------
只有数字才有八进制十进制的说法,字符哪有什么进制。。如果你定义int i = \000 那也许是八进制。你写在引号里面的都和数学无关,只是纯字符

反斜杠 是 C语言转义字符的标志。
\ddd为 三位八进制数。
\0是结束符。

你可以参考这里:
http://hi.baidu.com/duking/blog/item/1890c154ccca7450d0090624.html