要注意C语言中赋值时超出范围的数据的计算方法
对 char 类型变量赋值最容易超出范围,记得要截断保留低8位哦
signed char 整数取值范围: -128~127【 1000 0000(-128) ~ 0111 1111(127)】
![](https://img-blog.csdnimg.cn/img_convert/c769c0ec46ade5ffa94aba3cfbb1f769.png)
unsigned char 整数取值范围:0~255【 0000 0000(0) ~ 1111 1111(255)】
![](https://img-blog.csdnimg.cn/img_convert/fb902dbe0eb2e96eb82a26814ec87dee.png)
注:signed/unsigned char 超出范围的数据如果是正数,则减去256;超出范围的数据如果是负数,则加上256。
示例:
char a = 200;
printf("%d", a);
输出:200-256 = -56
char a = -129;
printf("%d", a);
输出:-129+256 = 127
char a = -130;
printf("%d", a);
输出:-130+256 = 126
所以:
无论你往 signed char 类型变量里放多大的数字,因为 char 只能存8个比特位,所以变量中截断保留的数值范围始终在-128~127之间
无论你往 unsigned char 类型变量里放多大的数字,因为 char 只能存8个比特位,所以变量中截断保留的数值范围始终在0~255之间