grace under pressure
分类: WINDOWS
2012-12-31 10:45:59
很久了,没写博文了,一方面是自己懒了,另外一方面是 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的范围应该是在-2147483647到2147483647之间,怎么可能溢出呢,但是对于VB这是真的发生了,不管你信不信,我是信了,那接下来,来分析一下为什么会发生这么戏剧性的一幕吧。
在VB的运算中,i和j是Integer型的,运算完了之后的结果还是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)