码迷,mamicode.com
首页 > 其他好文 > 详细

无符号数与有符号数的转换

时间:2019-09-30 18:19:34      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:nbsp   方式   sign   改变   --   强制   可见   short   符号   

废话不多说,直接干活!

 

  强制类型转换的实质(普通数据类型):

    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 charb = -1;           ------->  a < b

char a = -1; unsigned int b = -1;    ------->  a = b

 

结论:

    碰到unsigned int 类型,都转化为 unsigned int 类型进行比较, 其它情况均转为 int 类型数据进行比较

 

无符号数与有符号数的转换

标签:nbsp   方式   sign   改变   --   强制   可见   short   符号   

原文地址:https://www.cnblogs.com/hujingzheng/p/11613769.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!