首 页IT知识库翔宇问吧收藏本站
当前位置:翔宇亭IT乐园IT知识库C#专区C#基础

C#中的checked、unchecked操作符

减小字体 增大字体 作者:佚名  来源:转载整理  发布时间:2014-10-26 22:33:20

在C#中checked和unchecked操作符用于控制检查整型算术运算时是否溢出。

下列运算参与了checked和unchecked检查(操作数均为整数):

1) 预定义的++和――一元运算符。

2) 预定义的-一元运算符。

3)预定义的+、-、×、/等二元操作符。

4)从一种整型到另一种整型的显示数据转换。

checked与unchecked

当上述整型运算产生一个目标类型无法表示的大数时,可以有相应的处理方式:

1、使用checked

若运算是常量表达式,则产生编译错误:The Operation overflows at complie time in checked mode.
若运算是非常量表达式,则运行时会抛出一个溢出异常:OverFlowException异常

2、使用unchecked

无论运算是否是常量表达式,都没有编译错误或是运行时异常发生,只是返回值被截掉不符合目标类型的高位。

3、既未使用checked又未使用unchecked

若运算是常量表达式,默认情况下总是进行溢出检查,同使用checked一样,会无法通过编译。
若运算是非常量表达式,则是否进行溢出检查,取决于外部因素,包括编译器状态、执行环境参数等。

下例说明了checked和unchecked操作符在非常量表达式中的使用方法:

class Test
{
   static int x = 1000000;
   static int y = 1000000;
   static int F()
   {
      return checked(x*y); //运行时抛出OverFlowException异常
   }
   static int G()
   {
      return unchecked(x*y); //截去高位部分,返回-727379968
   }
   static int H()
   {
      return x*y; //依赖于编译器的默认设置,一般是不检查
   }
}

checked和unchecked操作符在常量表达式中的使用方法:

class Test
{
   const int x = 1000000;
   const int y = 1000000;
   static int F()
   {
      return checked(x*y); //编译错误,编译无法通过
   }
   static int G()
   {
      return unchecked(x*y); //截去高位部分,返回-727379968
   }
   static int H()
   {
      return x*y; //编译错误,编译无法通过
   }
}

Tags:C# 操作符

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 1分

内 容:

            请注意用语文明且合法,不要发布带有攻击性、侮辱性的言论,谢谢合作!

         通知管理员 验证码:

关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图 | 用户守则 | 联系我们 |
本站大多数内容来自互联网或网站会员发布,如有侵权,请来信告之,谢谢!
Copyright © 2007-2017 biye5u.com. All Rights Reserved.
网站备案号:黑ICP备13005378号-3