C语言中为什么字符在不同的存储单元中会不一样?

char grade = 'B';

本来'B'对应的数值66储存在32位的存储单元中,现在却可以储存在8位

的存储单元中(grade)。利用字符常量的这种特性,可以定义一个字符常

量'FATE',即把4个独立的8位ASCII码储存在一个32位存储单元中。如果把

这样的字符常量赋给char类型变量grade,只有最后8位有效。因此,grade的

值是'E'

你的理解错了,66并不是一定32位储存,这取决你给它多大的空间。前面的类型就是决定它空间的大小。