博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
checked和unchecked的区别
阅读量:4970 次
发布时间:2019-06-12

本文共 1012 字,大约阅读时间需要 3 分钟。

int类型的最大值是2147483647,2个最大值相加就会超出int的最大值,即出现溢出。

 
class Program
{
static void Main(string[] args)
{
int y = 2147483647;
int x = 2147483647;
int z = x + y;
 
Console.WriteLine(z.ToString());
Console.ReadKey();
}
}
 

把断点打在 int z = x + y;代码行,单步调试,可以看到z的值为-2。因为int类型的最大值是2147483647,x + y超出了最大值,出现了溢出。

 

□ 使用checked

如果我们想让编译器帮我们判断是否溢出,就使用checked关键字。

 
class Program
{
static void Main(string[] args)
{
int y = 2147483647;
int x = 2147483647;
int z = checked(x + y);
}
}

运行,抛出溢出异常:   

 

如果我们想手动捕获并打印异常,应该这样写:

 
class Program
{
static void Main(string[] args)
{
int y = 2147483647;
int x = 2147483647;
 
try
{
int z = checked(x + y);
}
catch (OverflowException ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadKey();
}
}
 

运行,

 

□ 使用unchecked   

使用unchecked不会抛出溢出异常。

 
class Program
{
static void Main(string[] args)
{
int y = 2147483647;
int x = 2147483647;
int z = unchecked(x + y);
 
Console.WriteLine(z.ToString());
Console.ReadKey();
}
}
 

结果为:-2

 

总结:checked关键字用来检查、捕获溢出异常,unchecked关键字用来忽略溢出异常。

转载于:https://www.cnblogs.com/darrenji/p/3907782.html

你可能感兴趣的文章
easyui+Spring MVC+hibernate = 乐途
查看>>
UVA10090 数论基础 exgcd
查看>>
配置Apache域名【转载】
查看>>
20145220《信息安全系统设计基础》第12周学习总结
查看>>
<算法编程> 把字符串中的空格替换成%20
查看>>
Docker容器运行ASP.NET Core
查看>>
WPF图片浏览器(显示大图、小图等)
查看>>
Asp.Net Core 轻松学-在.Net Core 使用缓存和配置依赖策略
查看>>
c#控制WPF程序自动登录(Automation方式实现)
查看>>
WPF特效-鱼游动动画
查看>>
零元学Expression Blend 4 - Chapter 13 用实例了解布局容器系列-「Pathlistbox」I
查看>>
在WPF中自定义你的绘制(一)
查看>>
利用PHP SOAP扩展实现简单Web Services
查看>>
经典算法题每日演练——第三题 猴子吃桃
查看>>
.Net码农学Android---系统架构和基本概念
查看>>
Windows Phone开发(37):动画之ColorAnimation
查看>>
DevExpress的Web控件汉化方法
查看>>
js中escape,encodeURI,encodeURIComponent 区别(转)
查看>>
结对编程项目-四则运算整体总结
查看>>
Android studio怎么修改文件名
查看>>