Chinaunix首页 | 论坛 | 博客
  • 博客访问: 275875
  • 博文数量: 39
  • 博客积分: 1215
  • 博客等级: 军士长
  • 技术积分: 471
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-17 19:34
个人简介

grace under pressure

文章分类

全部博文(39)

文章存档

2013年(6)

2012年(28)

2011年(5)

分类: 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的范围应该是在-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)
阅读(6097) | 评论(2) | 转发(0) |
0

上一篇:UART_MQX_K60

下一篇:交换分区设置

给主人留下些什么吧!~~

SUAL1982018-07-17 11:35:30

file:///C:/Users/Administrator/AppData/Roaming/Tencent/QQ/Temp/86266A4838CFE62024E71089E730D788.jpg

SUAL1982018-07-17 11:33:56

文明上网,理性发言... 怎么发照片给你