有符号的char和无符号char的取值范围
首先char 和 unsigned char 的都是占用一个字节空间大小的,8个bit位
所以char的取值范围是在-128——127
unsigned char 的范围是在0——255
注意:无论你放什么数据,它只要放在char 和unsigned char 里面他的取值一定是上面的。
然后他的取值是循环的
例如你将 128放在char里面 实际上值是-128 129放里面值是-127
你将-129放在插入里面,值是127 -130放里面值是126.
同理 unsigned char 也是一样的
自己可以敲代码理解感受一下。黑体字很关键。
这样可以避免复杂的截断,整型提升。
但是有一个前提,一定是%d有符号十进制打印
习题讲解
a,b的值是-1,char里面放的下。
而-1放在unsigned char 里面 就相当与从0向后走一下,取值是255.
这个题是%u无符号打印。所以要截断和整型提升这一系列的操作。
简单的说说整型提升:其实很简单,有符号位的数补符号位,无符号的直接补0;
当一个有符号数和无符号数进行比较(strlen 和sizeof)和运算的时候,有符号数一定要转化为无符号数
如何转化? 就是拿个有符号数的补码直接转化.计算的时候直接用补码计算。
到到0死循环
浮点型的存储方式
这个题告诉我们以整型的方式存储,用整型的方式拿出来正确,用浮点型拿出来错误
浮点 浮点 整型
这个具体的存储方式较为复杂,不要求掌握。但我还是写一下吧。
两种特殊情况
E为全0 值为0
E为全1 值为无穷大