博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
checked和unchecked的区别
阅读量:4974 次
发布时间: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

你可能感兴趣的文章
1134 最长上升子序列 (序列型 DP)
查看>>
js冒泡排序
查看>>
第一次作业 4班卢炳武
查看>>
抽象类的调用
查看>>
使用硬盘,安装双系统,Win7+CentOS
查看>>
Javascript学习总结
查看>>
php 用正则替换中文字符一系列问题解决
查看>>
ActiveMQ应用笔记一:基本概念&安装
查看>>
大话数据结构之四(串)
查看>>
加热炉简是新来的整个系统的板
查看>>
Mockito使用注意事项
查看>>
[LeetCode] Palindrome Linked List 回文链表
查看>>
UVA - 825Walking on the Safe Side(dp)
查看>>
android大概是通过logcat拦截Log
查看>>
关于codeMirror插件使用的一个坑
查看>>
评论:人才流失强力折射出现实畸形人才观
查看>>
git服务器gitlab之搭建和使用--灰常好的git服务器【转】
查看>>
基于机器学习的web异常检测——基于HMM的状态序列建模,将原始数据转化为状态机表示,然后求解概率判断异常与否...
查看>>
分享一种需求评审的方案
查看>>
虚拟运营商10月或大面积放号 哭穷背后仍有赢家
查看>>