VB中向整形变量赋值报异常溢出错问题

如下代码:

    Sub Main()
		dim b as uinteger
		dim a as integer
		
		b=&h84250000          'b为带符号整型,此时b为负数
        'a=b                  '如果这样赋值,VB并不会对b进行截取然后赋值给a,而会报溢出错误
		b=(b>>16) And &hffff  '正确的做法是右移2个字节,并清空高2字节,然后再向a赋值
		a=b
		Console.WriteLine("Hex: {0:x}",a<<16>>16)  '如果希望赋值后a为带符号,
                                    '应该进行a<<16>>16的操作,此时打印结果为  “Hex: ffff8425”
		Console.WriteLine("Hex: {0:x}",a)          '如果希望赋值后a为无符号,可直接使用,
                                    '此时打印结果为  “Hex: 8425”
    End Sub

通过 “a<<16>>16”的操作,保留了b的符号位。

参考自博客:https://blog.youkuaiyun.com/weixin_30590285/article/details/97021101

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值