WEB开发网      婵犻潧鍊婚弲顐︽偟椤栨稓闄勯柦妯侯槸閻庤霉濠婂骸浜剧紒杈ㄥ笚閹峰懘鎮╅崹顐ゆ殸婵炴垶鎸撮崑鎾趁归悩鐑橆棄闁搞劌瀛╃粋宥夘敃閿濆柊锕傛煙鐎涙ê鐏f繝濠冨灴閹啴宕熼鍡╀紘婵炲濮惧Λ鍕叏閳哄懎绀夋繛鎴濈-楠炪垽鎮归崶褍妲婚柛銊ュ缁傚秹鏁撻敓锟� ---闂佹寧娲╅幏锟�
开发学院WEB开发综合 一个关于乘法溢出问题的探讨 阅读

一个关于乘法溢出问题的探讨

 2006-02-27 11:51:52 来源:WEB开发网 闂侀潧妫撮幏锟�闂佸憡鍨电换鎰版儍椤掑倵鍋撳☉娆嶄沪缂傚稄鎷�婵犫拃鍛粶闁靛洤娲ㄩ埀顒佺⊕閵囩偟绱為敓锟�闂侀潧妫撮幏锟�  闂佺ǹ绻楀▍鏇㈠极閻愬搫绾ч柕濠忕細閼割亜顪冪€n剙浠ф繛鍫熷灥椤曘儵顢欓悡搴ば�
核心提示:这是译自VBnet的一篇FAQ,以前我也曾回答过这样的问题,因此公开于此以飨大家.问:谁能告诉我一下代码为何产生溢出错误?我已经把结果正确地声明为Long了.DimxasLongx=33*1000'产生溢出错误...然而当我直接赋值x=330000时,就正常运行没有错误.答:在计算赋给X的值时,VB会使用一个临
这是译自VBnet的一篇FAQ,以前我也曾回答过这样的问题,因此公开于此以飨大家.
问:谁能告诉我一下代码为何产生溢出错误?我已经把结果正确地声明为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&)->

Tags:一个 关于 乘法

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接