这段程序为什么会发生溢出错误?Private Sub Command1_Click()
Dim I As Integer
Dim J As Integer
On Error GoTo JERROR
For I = 0 To 3
MsgBox (I)
J = 10000 * 10000 '让J发生溢出错误
JERROR:
Next I
End Sub
Dim I As Integer
Dim J As Integer
On Error GoTo JERROR
For I = 0 To 3
MsgBox (I)
J = 10000 * 10000 '让J发生溢出错误
JERROR:
Next I
End Sub
解决方案 »
- catia二次开发论文
- 求教两个关于VB字符串的问题,急!!!!
- vb对文件夹和文件的查找问题
- Wincock模拟HTTP协议下载文件遇到的问题
- 关于MEDIA PLAY 在线等待如果通过马上结帐
- 高手进来帮帮忙 查询优化问题 实在搞不定了(小弟菜,没分给了,实在不好意思)
- ActiveBar,VSflex7,ttf16,ActiveTreeView,ActiveThreed,ActiveListBar等控件的中文说明,谁知道哪儿有?我可以把它们做为礼物送给你哟!
- 给一个日期返回是星期几,有这样的函数吗?
- 我想在vb里面加入sql语句来实现查询功能???
- VBA高手请进:如何在一个工程中调用加载宏中的函数?
- 急急急,con.Execute "delete from classes where 班级号='" & classID & "'"
- 播放mpg文件,第一次能打开,在此打开时报错。急!要被老板骂了!
Long(长整型)变量存储为 32 位(4 个字节)有符号的数值形式,其范围从 -2,147,483,648 到 2,147,483,647。
对于你所写的程序中变量J为Integer,所以出错就不足为奇了。
請試下Double或可變型(va...)
...
J = 10000& * 10000& '加长整型符号&我的猜想(也许不对):
VB不象C那样,先将integer转为long再计算,然后赋值
10000后面没跟&符号时,VB就把它当integer,相乘后溢出,转错误处理,而不管计算结果赋给谁。
如果把J定义为Integer,赋一个Long*Long值给它,也会出错至于为什么显示0以后不出现“运行时错误”,
而一定要在显示1(第二次进入循环)以后才显示,我也很奇怪
程序明明进入了错误处理。
想不通。VB的汇编代码太难看了,看了半天还是很糊涂 :(
Dim I As Integer
Dim J As Variant
For I = 0 To 3
J = 10000& * 10000&
MsgBox J
Next
End Sub
不会出错,不知道为什么
不会出错了,可谁知道原因呢?
Variant变量的存储空间为16个字节,当然不会出错.
但是实际应用中没这么应用的,因为无论从代码编写
习惯和实际运行效率开看,大部分程序员都不会用它. 2. 你的错误处理模块应该写在循环外边. 例如
... For I = 0 To 3
MsgBox (I)
J = 10000 * 10000 '让J发生溢出错误
Next I Exit Sub
JERROR:
MsgBox "error:[" & Err.Number & "]:" & Err.Description 3. 确实应该写成 J = 10000& * 10000& 的样式,具体原因
前面的朋友已经说了. 4. 总结: 虽然只是一个非常简单的例子,但是对培养良好的编程
习惯还是有点帮助的.