黑马程序员技术交流社区

标题: 谁能解释下这个奇怪的运行结果 [打印本页]

作者: 王庆功    时间: 2014-9-25 18:01
标题: 谁能解释下这个奇怪的运行结果
  1. #include <stdio.h>

  2. int main(){
  3.        
  4.        char name1[] = "itcast\01234";
  5.        char name2[] = {'o','k'};

  6.         printf("%s\n",name2);

  7.         return 0;
  8. }
复制代码

至于这段代码我觉得看过视频的人都知道老师想要讲什么知识点。但是在练习时无意中我写成了这样,出来个很奇怪的运行结果。
运行结果:
  okitcast
  34

作者: AngleMGG    时间: 2014-9-25 20:34
你确定?


作者: 小叶子    时间: 2014-9-25 21:09
本帖最后由 小叶子 于 2014-9-25 21:42 编辑

因为\是表示转义符

\接3个数字,是代表将八进制中的数字转义成10进制

\012   等价于   \n  所以就换行,输出34
作者: 小叶子    时间: 2014-9-25 21:47
012(八进制)转成10进制刚好=10
而码表中10正好是\n   
作者: 崔石炫    时间: 2014-9-26 02:26
学习了!mark
作者: Lizzie    时间: 2014-9-26 12:53
额 你发的程序的输出语句应该是输出name1 吧  
作者: wanyiyuan    时间: 2014-9-26 16:25
你打印一下 name1和name2的地址就知道是怎么回事了




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