永发信息网

vb 中的溢出

答案:3  悬赏:60  手机版
解决时间 2021-01-13 07:33
vb 中的溢出
最佳答案
在VB中整数Integer默认只有2字节,也就是表大范围只能从-32768 ~ +32767,而200 * 200已经达到了40000,超出了Integer的表达范围,所以出错了。

其实,200*200就会出错,因为200被解释为Integer,乘法后还是Integer,所以就算a是double类型,a = 200*200还是会报溢出。

所以,其实第一报错看是a的问题,其实还没有运行到将积赋值给a就出错了,不信你修改为:
dim a as double
a =200*200
print a
一样报告溢出

如果代码是这样的:
dim a as integer
a =200*200.0
print a
这时候200(整数)和200.0(双精度浮点)运算,得到双精度浮点,就不会报错了,但是当把40000.0赋值给整数a时,会报告溢出。

如果改成x=200,y=200
x和y是可变类型,可变类型可以接受大整数,所以没有报告溢出追问但是&是长整型喔!不是整型!追答问题是出在200*200,而不是a
你可以这样来理解:其实系统在处理计算时,200*200得到一个临时结果,然后将这个临时结果赋值给a。而这个临时结果和200一样,都是integer,所以200*200计算结果给临时结果时就发生了溢出,所以溢出与a无关
dim a as double
a =200*200
照样发生溢出错误

所以你这样修改:
dim a as long
a = 200& * 200
全部回答
数据类型的问题
上面的a为单精度型
单精度型最大 32767
而你的a=200*200 结果是40000
这样就出现了溢出。
(TxFrame(0) + TxFrame(1) + TxFrame(2) + TxFrame(3) + TxFrame(4) + TxFrame(5) + TxFrame(6) + TxFrame(7)) And &HFF
的计算过程是:TxFrame(0)=TxFrame(0) + TxFrame(1),这样算几次肯定会溢出的,建议你另外定义一个Integer变量做中间变量。
Dim temp As Integer
TxFrame(0) = &HC1
TxFrame(1) = &H33
TxFrame(2) = &HF1
TxFrame(3) = &H23
TxFrame(4) = 0
TxFrame(5) = &H33
TxFrame(6) = &H33
TxFrame(7) = &H1
temp = (TxFrame(0) + TxFrame(1) + TxFrame(2) + TxFrame(3) + TxFrame(4) + TxFrame(5) + TxFrame(6) + TxFrame(7)) And &HFF
TxFrame(8)=temp
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
猪肚章鱼花生汤有什么功效
男年_癸亥_月_甲寅_日_壬午_时_丙午。这是什
有一首歌是歌颂三峡的,三峡地方频道老歌
她是什么样的女人?她是真的喜欢过我吗?
一声画角谯门 半亭新月黄昏
抗核抗体1比320
wwwxuele人人通云教学下载
请教这个画落款是谁
武昌火车站到汉南大道顺威赛特公司坐什么公交
这一生情最难料也最难了 ,这是什么意思。
随着全球化时代的进程,如今企业社区是指什么
上课时旁边女生老是向我这边瞟
寻安卓手机记事本软件
第一次见女儿的男朋友说啥
喜定西公交枢站到宝山宝安公路杨行火葬场,乘
推荐资讯
8.5乘4.80的竖式怎么写一
22.54+(—4.4)+(—12.54)+4.4 16÷(—4&
出差在凯里待一天,有什么地方推荐?
当你忘记一件事会敷衍吗?
有人说要杀谁可以去派出所立案吗
《犬夜叉》中的《爱之歌》是谁唱的?
华为荣耀X6价格是多少?
索菲亚衣柜好,还是卡诺亚衣柜好啊。
Win10玩《qq飞车》的帧数调多少?
证明若r具有传递性和自反性,则r具有反对称性
yiyi的英文名怎么读是伊伊么
名词+ほど 这个语法是表示什么啊? 下面那三句
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?