VB那点事_溢出错误

6237阅读 2评论2012-12-31 lyq2325272
分类:WINDOWS

很久了,没写博文了,一方面是自己懒了,另外一方面是 MQX 源码方面的东西确实不怎么好些,断章取义的贴些东西上来,也没什么意义。

最近,因为需要,写了一个VB界面,因为是专门针对特定用途写的,没有通用意义,就不贴上来了,我接下来要说的是在这期间遇到的一个问题。先看下面这一段代码:

Dim Test_dbl As Long

Dim i As Integer, j As Integer

 

Private Sub Command1_Click()

i = 255

j = 255

Test_dbl = i * j

Text1.Text = Test_dbl

End Sub

很简单,就是将i*j的值赋给Long变量Test_dbl,在VB里面Long的范围应该是在-21474836472147483647之间,怎么可能溢出呢,但是对于VB这是真的发生了,不管你信不信,我是信了,那接下来,来分析一下为什么会发生这么戏剧性的一幕吧。

VB的运算中,ijInteger型的,运算完了之后的结果还是Integer,所以会溢出,这里必须要强制转换一下,请看下面代码:

Dim Test_dbl As Long

Dim i As Integer, j As Integer

 

Private Sub Command1_Click()

i = 255

j = 255

Test_dbl = CDbl(i) * CDbl(j)

Text1.Text = Test_dbl

End Sub

这样就不会出现溢出错误了。下面是一些关于VB中类型转换的函数,贴上来了:

CBool(expression)
CByte(expression)
CCur(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CSng(expression)
CStr(expression)
CVar(expression)
CStr(expression)
上一篇:UART_MQX_K60
下一篇:交换分区设置

文章评论