VB.NET处理产生溢出异常的等式的一部分

时间:2016-04-08 00:56:56

标签: vb.net types integer-overflow

举个简单的例子,下面的代码产生溢出异常:

Sub Main()
    Dim x As Int16 = 2 ^ 10
    Dim y As Int16 = 2 ^ 10
    Dim z As Int16

    z = CType(x * y / y, Int16)

    Console.WriteLine(z)
    Console.Read()

End Sub

当执行算术时,似乎由于方程是逐步计算的,因此方程的一部分将产生大于结果将进入的数据类型的结果。我知道我可以让z成为一个更大的数据类型,比如Int32,但是有没有办法说这个表达式作为Int32然后在它存储到z之前尝试将它转换为Int16?

1 个答案:

答案 0 :(得分:0)

您可以将x和y(Int16)转换为x2和y2(Int32),并使用x2和y2进行计算。

Sub Main()
    Dim x As Int16 = 2 ^ 10
    Dim y As Int16 = 2 ^ 10
    Dim z As Int16

    Dim x2 As Int32 = x
    Dim y2 As Int32 = y
    z = CType(x2 * y2 / y2, Int16)

    Console.WriteLine(z)
    Console.Read()
End Sub
相关问题