概述
首先,我们看一下这些数据类型的取值范围,我们举int为例,它的取值范围是(-2147483648~2147483647),我门可以使用int.MaxValue 和 int.MinValue来分别获取到int的最大值和最小值。
当我们在最大值的情况下+1,灰枣偶成int类型数据溢出,则值会变成最小值,此时,输出的结果并不是我们需要的。我们需要通过手动的开启溢出检查功能来捕捉异常。
开启溢出检查为checked关键字 , 而unchecked正好相反
举个栗子
设置开启溢出检查
我们在在Visual Studio中是允许设置项目属性来启用或者禁止溢出检查的。解决方案资源管理器—>右击选择属性—>在属性对话框中勾线生成—>单击右下角的高级按钮—>在高级生成设置对话框中勾选检查运算上溢/下溢选项
在手动启用checked的情况下:
此时checked关键字就打开运算溢出检查
using System;
namespace Test
{
class Program
{
static void Main(string[] args)
{
try
{
int a = int.MaxValue;//将a的值赋值
checked
{
a++;//a的值加1
Console.WriteLine("程序不会执行这句语句");
}
}
catch (OverflowException)//捕获
{
Console.WriteLine("a溢出了");
}
Console.WriteLine("结束");
}
}
}
输出结果
在关闭checked的情况下:
此时使用了unchecked就会强制不检查溢出的代码块
using System;
namespace Test
{
class Program
{
static void Main(string[] args)
{
try
{
int a = int.MaxValue;//将a的值赋值
unchecked //将关键字改为unchecked
{
a++;//a的值加1
Console.WriteLine("程序不会执行这句语句");
}
}
catch (OverflowException)//捕获
{
Console.WriteLine("a溢出了");
}
Console.WriteLine("结束");
}
}
}
运行结果
网友评论