什么情况下会符号扩展?
1. 类型转换时:char,unsigned char -> int, unsigned int
2. 以%d,%u,%llx等格式输出char,unsigned char时
int->char 什么情况下空间不足?
char一个字节,8bit,故当value>255或value<-128时,会取低位,舍弃高位数据。即正数的绝对值不超过256,负数的绝对值不超过128(因符号位占了1bit,还剩7bit)
另:
在内存比特位上(补码),负数的绝对值越大,输出时(原码),对应负数的绝对值越小。
如:1000 0000(绝对值为0) —— -128;1000 0001(绝对值为1)—— -127;11111 1111(绝对值为127) —— -1
注意,如:value=130和value=-126,比特位都为1000 0010,输出值不同是因为有符号和无符号的区别
有符号位和无符号位转化图解:
上代码: