我有一个计时器,它返回经过的时间:
Public Function TimeElapsed() As ULong
Dim ul As ULong
ul = m_lEnd - m_lStart
Dim ul2 As ULong
ul2 = ul - m_lOverhead
Dim ul3 As ULong
ul3 = (ul2 / m_lFreq) * 1000
Return ul3
End Function
现在我遇到了以下变量:
m_lEnd = 935083366402
m_lStart = 935007142800
ul2 = 76223588
m_lOverhead = 14
这让我在行中溢出
ul3 = (ul2 / m_lFreq) * 1000
我看不出为什么以及如何改善我的错误。
非常感谢您的帮助!
答案 0 :(得分:0)
你需要明确地告诉编译器你正在对ULong进行操作......这是因为数字文字默认为Integers
,所以你试图使用一个整数文字,这将导致像你的溢出问题。您可以使用正确的后缀将值强制为不同的类型。没有类型后缀的文字值可能只有最大值范围的值。这种情况是ULong
所以后缀是:UL。
顺便说一下,这是一个转换错误,请打开Option Strict ......
EX: Dim m_lEnd As ULong = 935083366402UL
最后请注意,这是需要发生的事情。