当定义一个char类型的数据a,给其赋值10,即char a=10;
对于char类型的数据,在使用printf函数输出的时候,应该用%c,
但我们想要用%d来输出类型为char的数据时,就会发生整型提升,将a由原本的八个比特位提升到int类型(%d)的32个比特位
整型提升规则,对于无符号数据(unsigned char),不足32个比特位的位置均补0,对于有符号数据(signed char),看原本数据的符号位是0还是1,是0则其余位补0,是1则其余位补1
例如 unsigned char a=10; //a的补码为00001010
printf("%d ",a); //当以整型输出时,出现整型提升,a是无符号数,其余位补0,即 00000000 00000000 00000000 00001010
例如signed char b=-10;printf("%d ",a);//b的原码为10001010,反码为11110101,补码为
11110110,当以整型输出时,出现整型提升,b是有符号数,且符号位为1,所以其余位补1,即
11111111 11111111 11111111 11110110,这是整型提升后b的补码,
反码为11111111 11111111 11111111 11110101
原码为10000000 00000000 00000000 00001010
结果为-10
标签:11111111,10,位补,00000000,C语言,char,提升,整型 From: https://blog.51cto.com/u_15466618/6113493