char ch = 'a';
printf("%d\n", sizeof(ch));
printf("%d\n", sizeof('a'));
输出结果是:
在C标准中:
char 和 字符变量属于字符常量,大小当然是1。
‘a’被称作整形字符常量(integer character constant),相当于是int类型,故为4。
c语言中字符常量是指由一对单引号括起来的单个字符,如“ 'a'”、“'D'”、“'?'”、“'$'”;它代表ASCII字符集中的一个字符,在内存中占4个字节,存放的是字符的ASCII码(整型数据)。C语言规定所有字符常量都作为整型量来处理。
用sizeof(类型名)是准确的做法
用sizeof(值)不太合适 ,因为你可能不确定这个值默认用什么类型存储。
就像你这个一样,char在C/C++中是一个字节,这是明确的。
但'a',1,9.95这样的字符、整数和浮点数,你可能不知道它默认的存储类型。
sizeof('a')在C代码下(后缀为.c),值为4,而在C++代码下(后缀为.cpp),值为1
sizeof(1)等于4,sizeof(9.95)等于8,也就是说,整数默认存储类型为int,浮点数默认存储类型为double