为什么字符常量所占字节是4而不是1

问题遇到的现象和发生背景

#include "stdio.h"

int main()
{

printf("%d\n",sizeof('a'));
return 0;

}

字符常量所占字节为什么是4

字符常量在内存中占4个字节,存放的是字符的ASCII码(整型数据)。 C语言规定所有字符常量都作为整型量来处理。

字符常量在计算机内部是以ASCLL码存储的即对应的码值是数字97,也就是算的是整形的类型大小

  为什么字符常量所占字节是 4 个字节而不是 1 个字节?这是因为 C 语言在存储字符型数据的时候,并不直接存储字符 ,而是通过 ASCII 码进行映射。在标准 ASCII 码表中,每一个数字都对应一个单独的字符,没有二义性,所以这也是为什么我们可以撰写下面的代码而不报错的原因:
 

char ch = '5';
int number = ch - '0';

 
注意,虽然我们可以将字符型变量当成整型变量来使用,但是字符型变量本身的数据范围很小,所以不推荐使用字符型变量存储整数
 

冷知识

  • ASCII (American Standard Code for Information Interchange) 直译为美国信息交换标准代码,这是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,它也是最通用的信息交换标准。
  • getchar() 返回的是一个 int 类型的变量