checked和unchecked整数运算
2019-10-07 本文已影响0人
bravelion
作用
C#的int是32位大小。由于int大小固定,它支持的值的范围:-2147483648~2147483647.
如果当前值已经是 2147473647的一个int上加1会发生什么?
1.得到错误值,即溢出,会得到-2148483648这个错误值
2.如果设置溢出检查,会抛出异常
C#提供了checked和unchecked关键字来控制以上行为
checked语句
int number = int.MaxValue;
checked//抛出OverflowException异常
{
int willThrow = number++;
Console.WriteLine("永远执行不到这里");
}
unchecked
{
int wontThrow = number++;
Console.WriteLine(“会执行到这里");
}
checked表达式
int wontThrow = unchecked(int.MaxValue + 1);//不抛出异常
int willThrow = checked(int.MaxValue + 1);//抛出异常
注意
不能使用checked和unchecked关键字控制浮点(非整数)运算。checked和unchecked关键字只适合int和long等整型运算。