Bug新鲜出炉

hotsoftuse 2002-05-15 09:58:21
我在练习用VB6的过程中,发现了一个难以令人置信的Bug

在VB6中执行代码:
dim x as double
x=100*1+100*99*10/2
print x

执行后报告“溢出”

欢迎各位大虾多多指教!!!
...全文
68 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyl910 2002-05-15
  • 打赏
  • 举报
回复
这样就行了:
x = 100 * 1 + 100# * 99 * 10 / 2
onlysgirl 2002-05-15
  • 打赏
  • 举报
回复
程序设计不好怎么能说是VB有BUG呢?
intersun 2002-05-15
  • 打赏
  • 举报
回复
可是gaoqi5037(高岐)兄的方法我试过了,也是溢出啊.
lphonex 2002-05-15
  • 打赏
  • 举报
回复
类似问题我也遇到过,
同意 gaoqi5037(高岐) 的解决方法
intersun 2002-05-15
  • 打赏
  • 举报
回复
另外,gaoqi5037(高岐)兄的做法我在VB6中试过了,也是不可以,其实100*99*10这个表达式根本就不能出现,只要出现就会报错。因为在计算这个式子时就会溢出,而不在于将这个式子赋予什么类型的值。

gump2000(阿甘)兄的方法可以。
intersun 2002-05-15
  • 打赏
  • 举报
回复
这个BUG我也遇见过,VB的确是算不出来100*99*10,我想这大概是因为100,99和10这三个数都在整形(即-32768<x<+32767)范围内,VB为他们分配的都是整形空间,我想这是对于常数分配空间的比较节省的做法,但是100*99*10=99000,已经超出了整形范围,VB没有自动判别这一溢出,因此会报错。

我想这是VB不太完善的地方。
hotsoftuse 2002-05-15
  • 打赏
  • 举报
回复
难道在VB6中,
连x=100*99*10 计算不出来

在VB中不是可以自动进行类型转换的吗?为什么还要麻烦加上类型说明符呢
请大家继续发表高见
lovingkiss 2002-05-15
  • 打赏
  • 举报
回复
呵呵,不溢出才是Bug
gump2000 2002-05-15
  • 打赏
  • 举报
回复
try this again:

Dim x As Double
x = 100# * 1 + 100# * 99# * 10# / 2
Debug.Print x
gaoqi5037 2002-05-15
  • 打赏
  • 举报
回复
不是Bug!
溢出的地方是在x=100*1+100*99*10/2处.
溢出的不是X而是100*99*10这个表达式
你可以这么写
dim x as double
dim TempLong as Long
tempLong=100*99*10
x=100*1+tempLong/2
print x
fuxc 2002-05-15
  • 打赏
  • 举报
回复
x = 100 * 1 + 100.0 * 99 * 10 / 2

呵呵~~

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧