算术运算符(+、-、*、/)产生的结果有可能会超出涉及的数值类型可能值的范围。在一般情况下的溢出说明如下:

 

1、整数算术溢出或者引发overflowException,或者丢弃结果的最高有效位。整数被零除总是引发DivideByZeroException。

2、浮点算术溢出或被零除从不引发异常,因为浮点类型基于IEEE 754,因此可以表示无穷和NAN(不是数字)。

3、小数算术溢出总是引发overflowException。小数被零除总是引发DivideByZeroException。

当发生整数溢出时,产生的结果取决于执行上下文,该上下文可为checked和unchecked。在checked上下文中引发overflowException。在未选中的上下文中,放弃结果的最高有效位并继续执行,因此,C#使您有机会选择处理或者忽略溢出。

除算术运算符以外,整型之间的强制转换也会导致溢出(例如,将long强制转换为int)并受checked和unchecked执行的限制。然而,按位运算符和移位运算符永远不会导致溢出。