十二:checked和unchecked

     简单来说checked和unchecked操作符用于整型算术运算时控制当前环境中的
溢出检查。看以下代码:(注:Byte为无符号8位值,0到255)

(1)

Byte b = 400;

b = (Byte)(b + 400);

(2)

Byte b = 200;

b = (Byte)(b + 200);

(3)

Byte b = 200;

b = checked((Byte)(b + 200));

(4)

Byte b = 200;

b = (Byte)checked(b + 200);

说明:

(1)编译第一行就通不过,常量值“400”无法转换为“byte”

(2)编译通过,此时b的值为144。该代码执行时第一步要求所有操作数都扩展为32位值,如果不够的话再扩展为64位,所以b和200首先转换成32位的值,然后再加到一起,结果是一个32位的400,该值在存回到变量b之前,必须显示转换成Byte。

(3)做益出检查,抛出OverflowException异常。

(4)编译通过,b为144。

C#编译器默认的是不进行益出检查(unchecked),因为益出检查会造成一定性能的损失。

C#还支持checked和unchecked语句块,如下:

checked

{

Byte b = 200;

b = (Byte)(b + 200);

}

System.Decimal类型是一个非常特殊的类型,它对cheched和unchecked都失去效用。

转载于:https://www.cnblogs.com/chenzehe/archive/2009/01/26/1381009.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值