VB overflow

[复制链接]
查看11 | 回复3 | 2009-7-14 20:57:09 | 显示全部楼层 |阅读模式
定义一个Long数组data()
Cint(inbyte(0))=35
Cint(inbyte(1))=128
上两者单独赋值给data(num)都可
data(num) = CInt(inbyte(0)) + 256 * CInt(inbyte(1))则提示overflow
请问如何解决?

回复

使用道具 举报

千问 | 2009-7-14 20:57:09 | 显示全部楼层
inbyte(0) = 35inbyte(1) = 128data(num) = CInt(inbyte(0)) + 256 * CInt(inbyte(1))因为 Integer 表示的最大整数是 32767256 * CInt(inbyte(1)) 是 32768因为 256 是 Integer,CInt(inbyte(1)) 也是 Integer相乘结果就是 Integer,所以溢出了这样就行了data(num) = CInt(inbyte(0)) + 256& * CInt(inbyte(1))...
回复

使用道具 举报

千问 | 2009-7-14 20:57:09 | 显示全部楼层
把下面data(num) = CInt(inbyte(0)) + 256 * CInt(inbyte(1))换成data(num) = CLng(inbyte(0)) + 256 * CLng(inbyte(1))就可以了。原因是Cint是转换为整形,取值范围-32768~32767CInt(inbyte(0)) + 25...
回复

使用道具 举报

千问 | 2009-7-14 20:57:09 | 显示全部楼层
因为你用了cint函数 而你256*inbyte(1)已经超过整型所能表达得数你应该这样 Clng(inbyte(0)) + 256 * CInt(inbyte(1))...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行