因为发现给unsigned int赋值了-1也可以用%d打印出来,于是就查了很多资料,大多数说法是,-1是以二进制补码存到计算机里的,然后就是读这个数,有的说是不同数据类型决定怎么读这个数,有的说是不同占位符决定怎么读这个数。如果是数据类型决定的话,unsigned int读出来不就应该是个很大的数吗。如果是占位符决定的话,为啥给char赋值-1然后%d打印出来是255。
char占一个字节,8位,2的8次方,最多表示256个数,也就是0--255;
无符号的char 的表示范围为0--255;
如果赋值给一个unsigned char型数据-1;
在计算机中-1 的补码为1111 1111;也就是255对应的补码,(正数的补码等于它本身,负数等于原码各位取反+1)