整数溢出
• 溢出错误
un/checked ( 表达式 )
un/checked{语句 }
int m = ...
Method(checked(m * 2));
m = checked(m * 2);
checked
{
Method(m * 2);
m *= 2;
}
以上的每一句语句都进行溢出错误检查
Method(m * 2);
m *= 2;
以上的每一句语句在用csc /checked+ *.cs编译时,进行溢出错误检查
以上的每一句语句在用csc /checked- *.cs编译时,不进行溢出错误检查
Method(unchecked(m * 2));
m = unchecked(m * 2);
unchecked
{
Method(m * 2);
m *= 2;
}
以上的每一句语句都不进行溢出错误检查
checked(表达式)检查一个表达式的结果是否溢出。它可以用于任何一个表达式,但只只能对整数操作符起作用,因为只有这些操作符才产生溢出。这些操作符是:++, --, -(负号),+ -(减号), * ,/ ,%以及整型之间的显式类型转换符。checked(表达式)的结果也是一个表达式,它可以被用来作为另一个表达式的一部分:
int outcome = checked( ... );
checked{语句}检查一系列的语句结果是否溢出。它不是一个表达式,没有结果。例如,下面有语句会产生错误:
int noOutcome = checked { ... };
(注意:checked(表达式)的括号是园括号,而checked{语句}的括号是花括号)。
unchecked是不检查是否溢出。