A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HMCC 中级黑马   /  2015-3-18 11:23  /  1453 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求教一下 下面代码的输出结果
#include <stdio.h>

int main()
{
     int size = sizeof 'a' ;
     printf("size=%d\n", size);
     return 0;
}

为啥输出结果是size=4. ‘a'不是字符类型吗 为啥不是1.求指教

12 个回复

倒序浏览
应该跟'a'的类型有关系,现在应该是unicode编码。
回复 使用道具 举报
C99标准的规定,'a'叫做整型字符常量(integer character constant),被看成是int型,所以在32位机器上占4字节。

ISO C++标准规定,'a'叫做字符字面量(character literal),被看成是char型,所以占1字节。
来源http://www.cnblogs.com/dolphin0520/archive/2011/04/04/2005089.html
回复 使用道具 举报
#include <stdio.h>

int main()
{
char c='a';
     int size = sizeof (c) ;
     printf("size=%d\n", size);
     return 0;
}
这样应该就对了,明确告诉编译器,这是一个字符!
备注:sizeof'a'相当于sizeof'65',65默认整形,所以是4个字节
回复 使用道具 举报

为什么  sizeof'a'相当于sizeof'65'   谢谢

点评

A的ASCII码是65,楼上可能是忘记按大写了,小写a是97。。  发表于 2015-3-18 14:06
回复 使用道具 举报
#include <stdio.h>

int main()
{
     int size = sizeof 'a' ;  //这里程序把'a'看成他的的ASSIC值,所以最终是一个数字而不是字母
     printf("size=%d\n", size);
     return 0;
}
回复 使用道具 举报
sizeof 'a' 会转换成ASSIC值,,等价于 sizeof 97  ,
int类型,结果是4
回复 使用道具 举报
sizeof是计算字节数的,int型数据在不同的编译器下字节数不同,因为通过sizeof就可以求出该数据类型在当前环境下的字节数,如果你对是字符但输入不是1疑惑,那是因为赋值运算符右边数据的数据类型会被转换成左边数据的类型,你可以将左边改为char型,那就是1了
回复 使用道具 举报
HMCC 中级黑马 2015-3-18 17:51:15
9#
谢谢大家啦
回复 使用道具 举报
是的 但是你把a当成int 类型了 所以 这个时候字符a 会自动转换成数字97  int类型在计算机中占4个字节 所以结果是4
回复 使用道具 举报
'a'  会转化为ASSIC码   

回复 使用道具 举报
代码不长,知识高深
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马