1、对基元类型执行的许多算术运算都可能造成溢出,有如下代码:
Byte b=100;
b=(Byte)(b+200);
简单的解读上面的代码:
第一步,将所有的操作数都扩大至32位或者64位(根据操作系统的位数决定...C#不会隐式地执行这个转型操作,这正是第二行代码需要强制转换为Byte的原因.如果不把结果值强制转换为Byte,代码如下:
byte b = 100;
b = b +300;
?...如果将值强行转换为Byte,那么还会出现一个问题,就是值溢出的问题,Byte只能表示0~255范围的值,所以300超出了Byte的范围,值就溢出了.不同的语言以不同的方式处理溢出,C和C++不视溢出为错误...也就是说C#允许程序员自己决定如何处理溢出,溢出检查默认是关闭的。...b += 200;//在checked语句块内,可以直接使用+=操作符,编译器自动会把值转换为byte,前提200必须在byte范围内
Console.WriteLine(b);
}
4、关于基元类型进行算术操作产生溢出的建议