一个关于乘法溢出问题的探讨
2018-06-17 17:11:53来源:未知 阅读 ()
问:谁能告诉我一下代码为何产生溢出错误?我已经把结果正确地声明为Long了.
DimxasLongx=33*1000'产生溢出错误
...然而当我直接赋值x=330000时,就正常运行没有错误.
答:在计算赋给X的值时,VB会使用一个临时变量.在此过程中,它使用的是一个与表达式中数据类型相同的临时变量.在上面的例子中,由于相乘的两个数都为整型(Integer),VB将使用一个整型的临时变量.当乘积超过32K(整型的极限)时,就会产生溢出错误.修正的方法是给表达式中的某个值指定一个类型标识符,强制VB使用一个足以容纳计算结果的临时变量.如:
x=33*1000&
尽管1000不是Long型数,但VB将使用一个Long型临时变量来保存结果.然而,还要注意这段代码:
x=33*1000*100&
由于VB试图将表达式前一部分的积赋给一整型临时变量,将仍然会发生溢出错误,尽管在表达式中已经声明了一个Long型数.修正的方法是把最大的数声明为Long或者是把VB将计算为Long型的数用括号括起来:
x=33*1000&*100
x=33*(1000*100&)->
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- And、Or和Xor:让我们来优化表达式 2018-06-17
- VB入门教程之一 2018-06-17
- 关于VisualBasic6.0类开发(下) 2018-06-17
- 关于VisualBasic6.0类开发(上) 2018-06-17
- VB千里行-让程序在后台运行 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash