符号数与有符号数的转换
废话不多说,直接⼲活!
强制类型转换的实质(普通数据类型):
1、保持位值不变,只是改变了解释这些位置的⽅式(最⾼位是否看成符号位来解释等等)
2、将short 或者 short 类型数据转化为 unsigned 类型时,先将数据转换为 int 类型,再将int 类型转换为 unsigned int 类型。
例如:
unsigned short  c = 12345;
short                  a = -12345;
unsigned short  b = a;
c 的补码: 1001 1100 0000 1100
a 的补码: 1001 1100 0000 1100
记住我
b 的补码: 1001 1100 0000 1100
打印 b 的值为 53191。
可见它们在内存中的存在的形式都是⼀样的,只是解释不同⽽已。
⽆符号数与有符号数进⾏⽐较:
int a = -1;    unsigned int b = 1;          ------->  a > b
char a = -1; unsigned char b = 1;      ------->  a < b
int a = -1;    unsigned char b = 1;      ------->  a < b
char a = -1; unsigned int b = -1;        ------->  a = b
结论:
碰到unsigned int 类型,都转化为 unsigned int 类型进⾏⽐较,其它情况均转为 int 类型数据进⾏⽐较