byte b = byte.MaxValue;
b++;
Console.WriteLine("b:"+b);
这段代码运行后会显示b的值为0,因为byte的最大数是255,超过这个值会导致溢出,得到0。
为此C#提供了checked运算符来执行溢出检查,如果溢出则会抛出异常,设置方式有两种。
一种是使用checked运算符:
checked
{
b++;
}
还有一种方法是在编译器中进行设置:
在项目右击,单击属性->生成->高级,勾选检查上溢和下溢,如图所示(VS2017)
这样就能检查除了标记unchecked运算符以外的代码了!
unchecked
{
b++;//不会被检查溢出
}
要注意的是编译器默认是unchecked模式,因为执行溢出检查会消耗性能。