C# unchecked

王朝百科·作者佚名  2011-03-08
窄屏简体版  字體: |||超大  

对于因为整数类型参与算术操作和类型转换时产生的“溢出异常”——System.OverflowException,在某些算法来讲不算真正的“异常”,相反这种溢出常常为程序所用。C#中checked和unchecked操作符用于整形算术运算时控制当前环境中的溢出检查。下列运算参与了checked和uncheced检查: ●预定义的++和--:一元操作符,当其操作数类型为整型时。

●预定义的-:一元操作符,当其操作数为整型数时。

●预定义的+、-、*、/等二元操作符,当两个操作数数据类型都是整型。

●从一种整型到另一种整型地显式数据转换。

当上述运算之一产生一个目标类型无法表示的大数时,在使用了checked操作符的表达式中,如果运算是一个常量表达式,则产生运行时错误,否则,当运行时执行该运算时会溢出异常。而在使用了uncheced操作符的表达式中,返回值被截掉不符合目标类型的高位。

如果非常量表达式没有被任何checked或unchecked操作符或语句所包括时,运行时计算该表达式的值,是否会产生溢出,依据于外部因素,如编译器状态、执行环境参数等。而对于一个常量表达式而言,总是默认为进行溢出检查。

使用了unchecked操作符后,溢出的发生不会导致编译错误。但这往往会出现一些不可预期的结果,所以使用unchecked操作符要小心。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航