同样的,你也可以定义 char cData = 65实际上也等同于 char cData = 'A'
c2和c3都有截断误差问题,但c2还牵扯负数存储的问题1000的二进制是:1111101000,而一个char型字符的大小是1个字节(8位),当一个较大类型的值赋给较小类型的变量时,会产生截断误差,并且是这样处理:把较大类型的低位(截多少位要看较小类型是几位的,char是8位的,所以截取最后8位)截取下来赋值给c2,于是c2的二进制值是11101000,而char是带符号类型的(unsigned char 是不带符号的),计算机里规定最高位为符号位,为1的话该值就是个负数,为0的话是正数,且负数在计算机里一般是按补码存储的,而c2的原码为10011000,即-24,而一个字节的负数打出的字符好像都是问号
这样c3也就好理解了