相关疑难解决方法(0)

为什么将int.MinValue除以-1会在未经检查的上下文中抛出OverflowException?

int y = -2147483648;
int z = unchecked(y / -1);
Run Code Online (Sandbox Code Playgroud)

第二行引起了OverflowException.不应该unchecked阻止这个?

例如:

int y = -2147483648;
int z = unchecked(y * 2);
Run Code Online (Sandbox Code Playgroud)

不会导致例外.

c# unchecked checked overflowexception

46
推荐指数
3
解决办法
2116
查看次数

为什么C#默认不使用算术溢出检查?

可能重复:
默认情况下,为什么语言不会引发整数溢出错误?

为什么C#默认不使用算术溢出检查?

我认为发生异常通常会更好,这样就不会模糊错误.我知道利用发生的"包装"行为偶尔会有用,但unchecked在这些情况下可以使用关键字来明确意图.

我希望这个决定是故意做出的,也许是为了增加与其他基于C语言的兼容性.

c# math overflow checked

14
推荐指数
1
解决办法
3271
查看次数

为什么int.MinValue%-1导致和OverflowException

在7.8.3.关于剩余运算符的C#规范,它声明如下:

如果左操作数是最小的int或long值而右操作数是-1,则抛出System.OverflowException.

因此int.MinValue % -1会导致OverflowException.我想知道为什么?

c# overflowexception modulus

5
推荐指数
1
解决办法
76
查看次数

标签 统计

c# ×3

checked ×2

overflowexception ×2

math ×1

modulus ×1

overflow ×1

unchecked ×1