#include <stdio.h>
int main()
{
char a=-1;
//10000000000000000000000000000001原码
//11111111111111111111111111111110反码
//11111111111111111111111111111111补码
//char字符需要8个bit位:11111111
//char字符打印为整型需要整型提升,看最高位是什么有符号补1,无符号补0
//11111111111111111111111111111111所以补码如此
//10000000000000000000000000000001打印原码出来是-1
signed char b=-1;
//这个也是有符号的,和上面一样
unsigned char c=-1;
//无符号的,所以8个bit位:11111111
//无符号补0
//00000000000000000000000011111111得到的是整型提升出来的补码
//无符号原反补相同,打印如此
printf("a=%d,b=%d,c=%d\n",a,b,c);
return 0;
}
一个有关char和整型提升的小题