C#中的数值类型转换注意

    C#中的数值类型转换是以数据的存储方式(即内存或寄存器中的存储数据)为依据的。而现在的计算机内存中普遍以补码方式存储数值数据,这就意味着在类型转换时以该补码为转换依据。记住这一点是很重要的。为理解方便,这里只举例说明。
1、short转int。
   这属于隐式类型转换,数值不变,理解起来也很容易,不多说了。
2、int转short。
   这需要强制类型转换,数值可能改变。在转换时舍弃其补码的高位两个字节(连同符号位)。如:(short)int.MinValue的结果为0。
3、int转uint。
   这属于隐式类型转换,数值可能改变。int和uint都占4个字节,在转换时不需要舍弃字节。补码亦不发生变化。但是要注意,uint的最高位隐藏着符号位0,即"0+补码"才是uint的真正补码。这一隐藏符号位是虚构出来的,方便理解。
    其他形式的转换就不再赘述了。总之,数值类型转换万变不离其宗,要以数值的存储方式为依据,在增加字节时考虑符号位的作用,而在舍弃字节时便把符号位看做一般数据位。如此,就很难再出错了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值