毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 计算机论文 >> 正文

浅谈VB中的变量使用 第5页

更新时间:2016-9-25:  来源:毕业论文
2. 变量在实际应用中出现的问题及解决方案
2.1 变量在使用时出现的溢出问题
溢出是计算机的一个可以补救的漏洞,全名:缓存区溢出漏洞。在计算机中,有一个叫缓存区的地方,它是用来存储用户输入的数据的,缓冲区的长度是被事先设定好的且容量不变,假如用户输入的数据超过了缓冲区的长度,那么就会溢出,而这些溢出的数据就会覆盖在合法的数据上。
    这时我们也可以利用漏洞写入恶意数据,这就是常说的溢出。VB中常见的溢出有:内存溢出、计算溢出、堆栈空间溢出、Long溢出、数据溢出、VB错误6溢出等。这里将详细介绍以下几点:
2.1.1 VB错误6溢出
大多数VB程序设计教程都很少提及赋值和计算中的“溢出”问题。然而在学生的编程中,“溢出”却是不可回避的一个问题。不正确的变量类型使用可能导致“溢出”。例如:
[例1]Private Sub Form_Click()
Dim pi As Single, n As Integer, t As Single
pi = 2
For n = 1 To 10
t = (2 * n) ^ 2 / ((2 * n - 1) * (2 * n + 1))
pi = pi * t
Next n
Print "n=10时,π="; pi
  
pi = 2
For n = 1 To 100
t = (2 * n) ^ 2 / ((2 * n - 1) * (2 * n + 1)) ‘此句发生溢出
pi = pi * t
Next n
Print "n=100时, ="; pi
……
End Sub
当程序运行到程序中加注释的语句时会产生运行期错误“实时错误'6':溢出”。学生们都注意到变量t用来保存公式的通项,应该使用精度比较高的实型数据,而认为n变量的取值分别是1~10、1~100、1~1000,当然使用整型(integer)就可以了。其实,错误就出在这里。为了解释这个问题,我们举一个简单的例子,如下程序段:
[例2] Private Sub Command1_Click()
Dim c As Long
c = 3 2* 1024
End Sub
程序运行时会发生溢出错误。大部分学生会认为,变量c已经是长整型了,足以放的下32×1024的积,怎么还会溢出呢?其实,VB在做数值运算时,会先开辟一个内存地址来存放计算结果,然后再传送到指定的变量中。如上面的程序,变量c虽然是长整型,其可存放数值的范围是(-2147483648,+2147483647),但VB做计算时,将32判断为整数,1024也判断为整数,就任意在内存的某个位置开辟2Byte大小的空间来存放32×1024的值,然后再回存至变量c。但32×1024(即32768)已超过任意在内存的某个地址开辟的2Byte的大小,故溢出。
怎样解决溢出问题呢?答案就是转变数据的类型。将例2的程序段改为:本文来自优*文!论(文&网,毕业论文 www.youerw.com
Private Sub Command1_Click()
Dim c As Long
c = CLng(3 2)*CLng( 1024)
End Sub
就可以正常计算了。理解了VB做数值运算的内部机理,我们就可以重新审视例1。当程序发生溢出错误时,我们点击“调试”,出错的语句会高亮度显示,我们把光标放在n变量上,可以发现溢出时n的值为91,n=91时,表达式(2 * n - 1) * (2 * n + 1)的值为33123。通过例2我们得知,n为整型变量,计算机会认为表达式2*n-1和2*n+1也是整型,所以会在内存中开辟2Byte的空间暂时存储表示式(2 * n - 1) * (2 * n + 1)的值,当n取值91时,乘积大于整型变量的取值范围-32768~+32767,故溢出。解决的办法可以有多种:

上一页  [1] [2] [3] [4] [5] [6] [7] 下一页

浅谈VB中的变量使用 第5页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。