tmi*_*hty 1 vb.net visual-studio-2017
以下代码引发System.OverflowException
Dim b1 As Byte = 13
Dim b2 As Byte = 26
Dim b3 As Byte = 125
Dim b4 As Byte = 225
Dim i As Integer = (b1 + b2 + b3 + b4) \ 2
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
在将值Integer分配给变量之前,不会将其转换为。这意味着直到(包括)该\ 2零件,一切仍然都是type Byte。
为了使这项工作有效,您必须至少将第一个变量转换为Integer,以便可以向其添加其他数字并超过255。
Dim i As Integer = (CType(b1, Integer) + b2 + b3 + b4) \ 2
Run Code Online (Sandbox Code Playgroud)
在线测试: https ://dotnetfiddle.net/Lxmx2S
请注意,由于这尊重数学运算的顺序,因此必须转换所有类型过小的实例,这些实例要先于其他实例进行计算。例如,如果您将操作更改为此:
Dim i As Integer = (CType(b1, Integer) + b2 * b3 + b4) \ 2
Run Code Online (Sandbox Code Playgroud)
它也将引发错误,因为它b2 * b3是在之前 计算的b1 + b2,因此您必须将其更改为:
Dim i As Integer = (CType(b1, Integer) + CType(b2, Integer) * b3 + b4) \ 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
113 次 |
| 最近记录: |