char a=-128;
printf("%u\n",a);//输出4294967168
因为-128的补码形式是11111111111111111111111110000000
此时 char类型不够存 只能截断前面部分保留后面的8个bit即此时a应该为10000000
打印出来时打印的时 unsigned int 所以 要进行整型提升 要补1(因为此时符号位还要带着)
10000000--->11111111111111111111111110000000 打印时为无符号数 正反补相同
所以打印出来为4294967168
char a=128;
printf("%u\n",a);//输出为同样的数 原理与上述相同
char a=-128;
printf("%d\n",a);//输出为-128
补码为11111111111111111111111110000000
输出为整数(signed int)时转化成原码应该将符号位带入 即此时为一个负数 负数的补码转化成原码符号位不变取反加一 即1000000000000000000000010000000输出为-128
char a=128;
printf("%d\n",a);//输出为-128
因为char类型的范围是-128-----127.