为什么以下代码的输出结果是
-2
,而不是抛出overflow exception
异常? long x = long.MaxValue;
long y = long.MaxValue + x;
-2
,而不是抛出overflow exception
异常? long x = long.MaxValue;
long y = long.MaxValue + x;
实际行为取决于项目设置,unchecked
等等。要确保溢出异常,请使用checked
,例如。
checked {
long x = long.MaxValue;
long y = long.MaxValue + x;
}
long x = long.MaxValue;
long y = checked(long.MaxValue + x);
long x = long.MaxValue + 1; // Error
long y = unchecked(long.MaxValue + 1); // Equivalent to y = long.MinValue