C#基础之checked与 unchecked的使用
C#基础之checked与 unchecked的使用
以上都是C#中的两个关键字的使用、据官网给出的相关介绍是:C# 语句既可以在已检查的上下文中执行,也可以在未检查的上下文中执行。
在已检查的上下文中,算法溢出引发异常。 在未选中的上下文中忽略算术溢出并将结果截断,方法是:丢弃任何不适应目标类型的高序位。
1、checked
checked 关键字用于对整型类型算术运算和转换显式启用溢出检查。默认情况下,如果表达式仅包含常量值,且产生的值在目标类型范围之外,则会导致编译器错误。 如果表达式包含一个或多个非常量值,则编译器不检测溢出。 在下面的示例中,计算赋给 i2 的表达式不会导致编译器错误。int类型最大值为:2147483647
1 {
2 int ten = 10;
3 int i2 = 2147483647 + ten;
4 Console.WriteLine(i2);
5 }
控制台输出:

默认情况下,在运行时也不检查这些非常量表达式是否溢出,这些表达式不引发溢出异常。 上面的示例显示 -2,147,483,639 作为两个正整数之和。
以上表达式包含一个或多个非常量值,则编译器不检测溢出、如果表达式仅包含常量值,且产生的值在目标类型范围之外,则会导致编译器错误?答案是会的
1 {
2 //如果表达式仅包含常量值
3 int i2 = 2147483647 + 10;
4 Console.WriteLine(i2);
5 }

以上结果直接编译不通过。原因是由于编辑器默认情况下启用checked模式、并且仅包含常量值、不包括变量情况下、编辑器会自动帮我们判断、
那么对于第一种情况包含变量时、我们需要使用checked关键字判断是否运算溢出?代码如下
1 checked
2 {
3 int ten = 10;
4 try
5 {
6 int i3 = 2147483647 + ten;
7 }
8 catch(Exception ex)
9 {
10 Console.WriteLine(ex.Message);
11 }
12
13 }
控制台输出:

以上就是checked关键字使用、启用是否溢出检查、那想要取消溢出检查呢?使用unchecked可以避开检查
2、unchecked
unchecked 关键字用于取消整型类型的算术运算和转换的溢出检查。
1 unchecked
2 {
3 int i2 = 2147483647 + 10;
4 Console.WriteLine(i2);
5 }
控制台输出:

如果删除 unchecked 环境,会发生编译错误。 由于表达式的所有项都是常量,因此可在编译时检测到溢出。以上就是checked与uncheck的相关使用
C#基础之checked与 unchecked的使用的更多相关文章
- Java异常之checked与unchecked
首先,java的异常分为Error和Exception.这两类都是接口Throwable的子类.Error及Exception及其子类之间的关系,大致可以用下图简述. 注意事项: 1. Error仅在 ...
- C# checked和unchecked详解
1.对基元类型执行的许多算术运算都可能造成溢出,有如下代码: Byte b=100; b=(Byte)(b+200); 简单的解读上面的代码: 第一步,将所有的操作数都扩大至32位或者64位(根据操作 ...
- c# 使用checked和unchecked
首先要知道int型在c#中是一个32位的数.由此可以知道int型的取值范围是(-2147483648~2147483647)当要使用int的最小值或者是最大值的时候,可以使用int.MinValue和 ...
- Checked Exception & Unchecked Exception
查Spring事务管理时看到一句话: Spring使用声明式事务处理,默认情况下,如果被注解的数据库操作方法中发生了unchecked异常,所有的数据库操作将rollback:如果发生的异常是chec ...
- C# checked和unchecked运算符
1.作用 checked和unchecked运算符用于CLR(公共语言运行时)强制对它们所作用的代码块,进行(不进行)代码溢出检测 2.示例说明 有代码如下: static void Main(str ...
- checked 和 unchecked 基元类型操作
对基元类型执行的许多算术运算都可能造成溢出: Byte b = ; b = (Byte) (b + ); // b 现在包含 44(或者十六进制值 2C) 重要提示:执行上述算术运算时,第一步要求所有 ...
- C# checked和unchecked 关键字详解
checked 和 unchecked关键字用来限定检查或者不检查数学运算溢出的:如果使用了checked发生数学运算溢出时会抛出OverflowException:如果使用了unchecked则不会 ...
- 使用checked和unchecked来对整数溢出进行检测和忽略
在C#中,整数int32的取值为-2147483648~2147473647(可以通过int.MaxValue和int.MinValue获得)当超出这个范围后,编译器不会进行检查,仍然会进行运算,但得 ...
- Checked 和 UnChecked 异常 的使用场合
异常的概念 任何的异常都是Throwable类(为何不是接口??),并且在它之下包含两个子类Error / Exception,而Error仅在当在Java虚拟机中发生动态连接失败或其它的定位失败的 ...
随机推荐
- UVA11549计算器谜题
题意: 有一个计算机只能保留数字的前n位,你有一个数字k(k<=9),反复平方后在计算机上显示的最大数字是多少. 思路: 显然这个题目是有循环节的,为什么有循环节?首先 ...
- Mac FTP 安装与使用
安装ftp brew install telnet brew install inetutils brew link --overwrite inetutils 使用ftp 1. 登录 #方式一 $ ...
- Spring的安装
Spring的安装 Spring框架包 spring-framework-4.3.6RELEASE-dist.zip http://repo.spring.io/simple/libs-release ...
- 通过CRM系统改变传统工作模式
在现在这个互联网时代,同行业的竞争越发激烈,因此许多企业都选择使用CRM来提高企业的销售业绩.CRM客户关系管理系统是能够优化企业的销售流程.维护良好的客户关系.对销售流程进行管理的强大工具.但是很多 ...
- 炸天的3D引擎OpenCASCADE的用法及案例(https://blog.csdn.net/xipengbozai/article/details/117044032?spm=1001.2014.3001.5502)
What CASCADE?Open CASCADE(简称OCC)平台是由法国Matra Datavision公司开发的CAD/CAE/CAM软件平台,可以说是世界上最重要的几何造型基础软件平台之一.开 ...
- Linux VMware Tools详解
VMware Tools描述 VMware Tools 中包含一系列服务和模块,可在 VMware 产品中实现多种功能,从而使用户能够更好地管理客户机操作系统,以及与客户机系统进行无缝交互. 在Lin ...
- date命令月日时分年
# date +%Y/%m/%d2019/09/29[root@a-3e5 lpts-20190910-keyan-v0.2]# date +%H:%M20:00
- xrandr 直接输这个能显示可用的分辨和当前的分辨率 xrandr -s 1920x1200就设置成指定的分辨率
利用 xrandr 命令修改屏幕分辨率 时间 2016-10-29 原文 http://blog.csdn.net/mao0514/article/details/52965700 问题背景 ...
- ipmitool使用手册(20200401)
ipmitool使用手册原创xinqidian_xiao 最后发布于2018-07-05 12:15:47 阅读数 17579 收藏展开一.查找安装包 查看ipmitool属于哪个安装包 #yum p ...
- JDK版本升级
背景:本来安装了一个1.6版本的JDK,因为版本过低需要升级成1.8 安装过程很简单一路next,主要是遇到几个问题需要备注一下解决方法. Error opening registry key'sof ...