<关于C语言的无符号整型?-生活常识-龙咔百科
> 生活常识 > 列表
关于C语言的无符号整型?
时间:2024-12-23 20:23:45
答案

有符号和无符号的区别就在于最高位

有符号的最高位是符号位,1表示负数,0表示正数

无符号所有数位都是表示数值的

当输入-1的时候,相当于赋值c=-1,根据补码规则,-1的十六进制在int类型下是0xffffffff,按照%d输出-1,按照%u输出无符号就是2的32次幂-1,也就是你输出的那个值

而如果定义unsigned char,实际上用%u或者用%d输入是有风险的,因为会实际赋值4个字节,本质上是越界的,正确做法是%hhd或者%hhu

不管怎么样,还是把赋值成了0xff,至于越界的三个字节赋值给谁就不知道了

用%u或者%d输出就都是255了,也就是2的8次幂-1这样的一个值

如果定义的不是unsigned char c,而是char c,那么你会得到另一个不同的结果了

推荐
© 2024 龙咔百科