文章分类 | 软件分类 | 最新软件 | 杀毒软件 | 实用软件  | MTV下载  | 设为首页 |
  | 下载分类 | 最近更新
您的位置: 首页 >> 文章首页 >> 技术开发 >> .Net 专栏 >> C#语言 >>  
C#语言点击TOP10
·使用Web服务将C#代码转换为VB.NET代码2006-2-9 18:10:39
·C#编写的windows计算器-源代码2006-2-10 16:08:20
·用Visual C#中实现DB2数据库编程2006-2-9 16:41:48
·C#中的非安全编程2006-2-9 17:32:38
·编程特例篇——LOGO语言2006-2-5 23:53:56
·Visual FoxPro 9中新的数据处理方式2006-2-6 7:50:17
·小议Windows CE 的下浏览器配置2006-2-6 7:50:09
·如何更好更快的debug2006-2-5 23:53:54
·利用c#制作简单的留言板22006-2-9 16:41:33
·C++中通过溢出覆盖虚函数指针列表执行代码2006-2-9 12:28:20
.Net 专栏点击TOP10
·ADO.net中数据库连接方式2006-2-9 17:35:03
·ASP.NET里的事务处理2006-2-5 12:41:30
·使用Web服务将C#代码转换为VB.NET代码2006-2-9 18:10:39
·十天学会ASP.net之第九天2006-2-6 10:10:06
·如何给DataGrid添加双题头分类显示2006-2-5 18:46:43
·使用嵌套的Repeater控件2006-2-5 12:41:52
·Net 下安装、调试的常见问题与错误2006-2-9 9:04:53
·在ASP.NET中值得注意的两个地方2006-2-9 16:40:07
·C#中的非安全编程2006-2-9 17:32:38
·ASP.NET中利用cookies保持客户端信息2006-2-9 17:33:25

 

C#中的checked、unchecked操作符
作者:我去下载           时间:2006-2-10 12:22:10


checked和unchecked操作符用于整型算术运算时控制当前环境中的溢出检查。下列运算参与了checked和unchecked检查(操作数均为整数):

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

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

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

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


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


(一)使用checked

若运算是常量表达式,则产生编译错误:The operation overflows at complie time in checked mode.

若运算是非常量表达式,则运行时会抛出一个溢出异常:OverFlowException异常


(二)使用unchecked

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


(三)既未使用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;     //编译错误,编译无法通过

}

}

分页:
相关文章:
Copyright© 2005-2006 wqxz.com, All Rights Reserved. 购买虚拟主机请与本站联系