1、对基元类型执行的许多算术运算都可能造成溢出,有如下代码:
Byte b=100;
b=(Byte)(b+200);
简单的解读上面的代码:
第一步,将所有的操作数都扩大至32位或者64位(根据操作系统的位数决定...如果将值强行转换为Byte,那么还会出现一个问题,就是值溢出的问题,Byte只能表示0~255范围的值,所以300超出了Byte的范围,值就溢出了.不同的语言以不同的方式处理溢出,C和C++不视溢出为错误...,并允许值回滚.应用程序将若无其事的运行.相反,Microsoft Visual Basic总将溢出视为错误,并会在检测到溢出时抛出一个错误....CLR还有一个add.ovf的指令,作用是将两个值加到一起,但会在抛出异常时抛出一个System.OverflowException异常。...;//在checked语句块内,可以直接使用+=操作符,编译器自动会把值转换为byte,前提200必须在byte范围内
Console.WriteLine(b);
}
4、关于基元类型进行算术操作产生溢出的建议