無符號數與有符號數的轉換


廢話不多說,直接干活!

 

  強制類型轉換的實質(普通數據類型):

    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 類型數據進行比較

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM