黑马程序员技术交流社区
标题:
字符变量和字符常量所占内存大小??
[打印本页]
作者:
叶子哥
时间:
2016-4-19 21:07
标题:
字符变量和字符常量所占内存大小??
这个现象 有个什么合理的解释呢?
char ch1 = 'a';
printf("字节:%ld\n",sizeof(ch1)); //字节:1
printf("字节:%ld\n",sizeof('a')); //字节:4
复制代码
作者:
烛风小糊涂
时间:
2016-4-19 22:26
字符‘a’是以ASCII码值储存在计算机中的一个常量,ASCII码值是97,以整型类型存储,占4个字节;
ch1是你定义的char类型的一个变量,所以是1个字节
作者:
muzipiao
时间:
2016-4-19 22:53
char ch1 = 'a';
printf("字节:%ld\n",sizeof(ch1)); //字节:1
复制代码
这里字符常量长度为1,这个没有什么异议吧!
printf("字节:%ld\n",sizeof('a')); //字节:4
复制代码
这里,打印的长度为4,那是因为'a'就是ASCII码的97,这里XCode编译器把'a'理解为了97,是int类型,所以长度为4
printf("a'length=%ld\n",sizeof((char)'a'));
复制代码
如果想打印为字符的长度,可强制转换一下,打印出来,字节:1
备注:不同编译器结果不同,C++编译器,下面的打印结果仍是1,那是因为C++编译器认为'a'是字符常量,XCode编译器认为'a'为整形常量97
作者:
叶子哥
时间:
2016-4-20 21:03
谢谢各位大侠的回答。。
我自己查了下资料。根据C99标准的规定,'a'叫做整型字符常量(integer character constant),为int型,故结果是4(对于32位机器);而ISO C++规定,'a'叫做字符字面量(character literal),为char型,故结果是1。C强调了'a'的“数”属性,而C++强调了'a'的“字符”属性。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2