上一篇:C#中的数组和C++中数组的区别 >>
C#中的checked、unchecked操作符
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; //编译错误,编译无法通过
}
}
下一篇:C#中方法参数的四种类型 >>
相关文章:
- · c#.net常用函数列表
- · 简单的c#文本文件读写
- · [C#]log4net写SQLServer数据库日志的配置方法
- · BASE64编码规则及C#实现
- · 把一个int数组的数字从小到大排列(C#)
- · C#学习笔记(一)-- 入门的困惑
- · C#--一直飞翔的小鸟
- · 用ASP.NET/C#连接Access和SQL Server数据库
- · C#版的网站新闻发布系统
- · validateTextBox:一个自验证TextBox控件(附带c#源码)
- · 在C#中用户控件与窗体间的消息传递
- · c#.net常用的小函数和方法集
- · 使用C#与NNTP服务器交互!
- · 生成静态文件的新闻系统核心代码(.net C#)(二)
- · 也说C#实现对Word文件读写
- · 生成静态文件的新闻系统核心代码(.net C#)(一)
- · C#操作Excel(导入导出)
- · 3. AopProxyAttribute AOP代理特性
- · C# AOP微型框架实现(二)
- · C# AOP微型框架实现(一)
- · C#通过ODBC调用DB2存储过程
- · c#改写的(vb.net)模拟时钟
- · 终于体会到了,在.net开发不用C#那纯粹是自找麻烦阿
- · 一个自定义LABEL组件的C#源代码
- · 在C#中使用XML指南之读取XML
- · C#和SQL数据浏览分页
- · 小偷程序(ASP.NET+c#)
- · Autodesk官方最新的.NET教程(七)(C#版)
- · Autodesk官方最新的.NET教程(六)(C#版)
- · C#中的cookie编程
- · 用C#生成随机中文汉字验证码的基本原理
- · C#编写的windows计算器-源代码
- · 一篇翻译的 .Net 中字符串性能
- · C#线程 在某一时间内,只有N个线程在并发执行,其余都在队列中的实现
- · 数据库中与C#中的数据类型对照
- · C#2.0中用范型实现单例模式
- · 基于C#的接口基础教程之六(5)
- · 基于C#的接口基础教程之六(4)
