C#中整数溢出机制介绍

整数溢出
•                    溢出错误
       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是不检查是否溢出。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值