level 3
Dim a As Longa = 1440 * 60'溢出Print a
2006年07月25日 12点07分
1
level 8
很正常!因为你的1440*60的值大于定义的long(长整)
2006年07月25日 14点07分
3
level 7
没什么奇怪的------------------------------------------系统要求2Byte(32bits)来存放资料,其可存放的范围为-32768 ~
+3
2767(在VB时),当数值超过这个范围时,因内存空间已固定为2Byte,无法法再增加,在C语言里只取2Byte,而VB会造成溢出现象而停止程序执行因为VB在做数值运算时,会先开一个内存地址来存放计算结果,然后在传送到你指定的变量里,如上一个程序,变量a虽然是长整数,其可存放数值范围为-2,147,483,648 ~ +2,147,483,647,但VB作计算时,将32判断成整数,1440 也判断成整数,就任意在某个位置的内存上开启 2Byte大小来存放1440 * 60的值再回存至变量a,但1440 * 60已超过任意在某个地址的内存2Byte的大小,故溢出。要解决这个问题就只有转换变量的类型了,看下面一段现成的例子Private Sub command1_Click() Dim D As Long D = CDec(32) * CDec(1024) '转成十进制D = CDec(-32768) - CDec(1) '转成十进制D = CLng(32) * CLng(1024) '转成长整数D = CLng(32767) + CLng(1) '转成长整数End Sub
2006年07月25日 16点07分
5