黑马程序员技术交流社区

标题: 发现一个惊人的char类型占位:大牛会吗? [打印本页]

作者: hei军    时间: 2015-11-19 19:33
标题: 发现一个惊人的char类型占位:大牛会吗?
char ch[10]={'i','love','you'};

for(int i=0;i<10;i++){

printf("%d",ch[10]);

}

原来当char类型的元素中多出来的字母都会省略,只会打印相应的最后一个字母



结果:i               e                   u
作者: hei军    时间: 2015-11-19 19:36
其实这也不是什么大问题  ,   好像就是有点丢失精度的问题
作者: 红龙果    时间: 2015-11-19 19:57
char c='hello';
printf('%c',c);//输出结果为o

应该是对c赋值时,先赋值为h,然后e,最后为o
作者: 煌龙    时间: 2015-11-19 20:43
你的用%S打印啊,%S才是打印字符串数组的,%C是单个字符,hello之所以是O因为前面的全部覆盖了
作者: hei军    时间: 2015-11-22 12:12
红龙果 发表于 2015-11-19 19:57
char c='hello';
printf('%c',c);//输出结果为o

谢了    ,刚看了确实是有很多问题
作者: 649685603    时间: 2015-11-22 22:08
分工会根据客户即可回家客户即可
作者: 一枚小刁民    时间: 2015-11-23 14:43
直接用%c就好啦
作者: linexs    时间: 2015-11-23 15:51
char []数组,撸主这样赋值不规范,单引号会塞不进去
作者: 触底反弹    时间: 2015-11-23 17:03
数组就只给了一个字节,你反复覆盖掉了前面的内容
作者: 一曲繁华尽    时间: 2015-11-23 18:42
。。。这还惊人  
基础没掌握好
双引号内的内容是字符串 单引号内的内容是单个字符
所以你定义的数组只有ch[0]ch[1]ch[2]中有内容 分别是 i e u




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