VB.NET ULong溢出

时间:2014-02-17 23:20:23

标签: vb.net

我有一个计时器,它返回经过的时间:

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

我看不出为什么以及如何改善我的错误。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你需要明确地告诉编译器你正在对ULong进行操作......这是因为数字文字默认为Integers,所以你试图使用一个整数文字,这将导致像你的溢出问题。您可以使用正确的后缀将值强制为不同的类型。没有类型后缀的文字值可能只有最大值范围的值。这种情况是ULong所以后缀是:UL。

顺便说一下,这是一个转换错误,请打开Option Strict ......

 EX: Dim m_lEnd As ULong = 935083366402UL

最后请注意,这是需要发生的事情。