程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 一個關於乘法溢出問題的探討

一個關於乘法溢出問題的探討

編輯: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&)->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved