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# checked、unchecked操作符相关推荐

  1. 基础知识《十》unchecked异常和checked异常

    Exception和继承自Exception的RuntimeException有什么区别呢?  Java compiler要求所有的Exception 要么被catch,要么被throw,除非这是一个 ...

  2. Java异常:选择Checked Exception还是Unchecked Exception?

    Java包含两种异常:checked异常和unchecked异常.C#只有unchecked异常.checked和unchecked异常之间的区别是: Checked异常必须被显式地捕获或者传递,如B ...

  3. [转载] Java异常:选择Checked Exception还是Unchecked Exception?

    参考链接: Java中的已检查与未检查异常| checked或unchecked异常 Java包含两种异常:checked异常和unchecked异常.C#只有unchecked异常.checked和 ...

  4. csharp的几个特殊操作符

    is操作符 被用于动态地检查运行时对象类型是否和给定的类型兼容.运算"e is T"的结果,其中e是一个表达式,T是一个类型,返回值是一个布尔值.他表示,e是否能通过引用转换.装箱 ...

  5. C#语言入门详解笔记(5)—P10、P11、P12 操作符详解_1_2_3

    C#语言入门详解_哔哩哔哩_bilibiliC#语言入门详解搬运,随youtube上进度更新.刘老师的C#视频教程到30集就告一段落了,感谢刘老师在这5年间的付出.能上youtube的同学可以去刘老师 ...

  6. c#美味:使用checked语句防止数据溢出

    在C#中有一个关键字checked,它用来判断当前上下文中的数值运算和数值转换是否会溢出.如是是常量溢出,那在编译时就能发现:如果是变量溢出,那在运行时会抛出OverflowException. 数值 ...

  7. java checked异常有那些,java checked exceptions

    当前位置:我的异常网» 热门搜索 » java checked exceptions java checked exceptions www.myexceptions.net  网友分享于:2013- ...

  8. css unchecked,详细介绍CSS中的伪选择器

    说到伪选择器,真的让我体会到了CSS的无比强大,强大到自己貌似都不认识CSS了,有点C# 6.0中一些语法糖带给我们的震撼...首先 我们可以在VS里面提前预览一下. 可以看到,上面的伪类有很多很多, ...

  9. C#表达式,类型和变量

    本节课将介绍C# 语言的表达式,类型和变量.本节课要达到如下几个目的: 1.了解什么是"变量" 2.学习C#的简单类型 3.对C#表达式有个初步的了解 4.了解什么是String类 ...

最新文章

  1. python自动化干什么-高效工作,拒绝加班,看Python自动化功能到底有多强大
  2. (转)光照模型及cg实现
  3. 目录和文件管理(一)
  4. surface pro 7 linux,微软 Surface Pro、Studio、Laptop 全线更新
  5. CSS之background-size属性
  6. eclipes创建一个web项目web.xml不能自动更新的原因(web.xml和@WebServlet的作用)
  7. 在matplotlib中改变tick(标签)的字体大小
  8. sql分区表上创建索引_SQL Server中分区表和索引的选项
  9. android阴影edittext,android – 将阴影效果添加到EditText字段
  10. hdu 1540 Tunnel Warfare (线段树维护左右最长连续区间)
  11. Python多线程实例
  12. 深度学习CNN算法原理
  13. android随机抽奖代码_Android自己定义效果——随机抽奖
  14. linux 多核 双系统,Linux GRUB实现双系统引导教程
  15. FFplay文档解读-4-编解码器选项一
  16. 【博弈论】Nim游戏/Nim博弈及其异或的详细易懂理解
  17. 老男孩教育运维班100台规模集群存储系统搭建及数据实时备份上机实战
  18. 【操作系统】第2章 进程与线程
  19. docker — volumes、MySQL数据库持久化
  20. 知乎上这个话题引起了我的兴趣:在实体经济一片下滑的大环境中,哪些行业还可以?

热门文章

  1. append从一个添加到另一_真特么激动第一个爬虫----爬取豆瓣电影top250
  2. java服务器gc停顿_如何避免后台IO高负载造成的长时间JVM GC停顿(转)
  3. python argparse模块_Python argparse模块应用实例解析
  4. Java获取照片的Exif信息,并解析GPS
  5. 使用Python和OpenCV在图像之间执行超快速的颜色转换
  6. QT:(1)QT下载地址
  7. matlab实现指数平滑(一次/二次/三次)
  8. PCL的PNG文件和计算点云重心
  9. VS+Eigen+CUDA compile error: C2244 and MSB3721
  10. 学习如何在AutoCad土木工程中绘制建筑设计图