【发布时间】:2014-02-20 09:46:57
【问题描述】:
我在下面的表达式中忽略了什么? Int64 类型的范围不是比 Int16 大吗?
Int64 value = (Int64)(System.Data.SqlTypes.SqlInt16.MaxValue+1);
System.Data.SqlTypes.SqlInt16.MaxValue 为 32767。 Int64.MaxValue() 为 9223372036854775807。
32767 + 1 = 32768。这比 9223372036854775807 低很多(!)。
那么为什么我在施放时会得到 Aritmethic 溢出
(Int64)(System.Data.SqlTypes.SqlInt16.MaxValue+1);
到 Int64?
(是和C#中+运算符的实现有关还是...?)
【问题讨论】: