廢話不多說,直接干活!
強制類型轉換的實質(普通數據類型):
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 類型數據進行比較