读书人

ushort越界有关问题求教育

发布时间: 2012-10-20 14:12:48 作者: rapoo

ushort越界问题,求教育
求教育:

C# code
ushort s1 = 65534; ushort s2 = 4; s1 = s1 + s2; s2 = s1 - s2; s1 = s1 - s2;

第一次,s1的值变为2;
s2的值变为65534;
第二次,s1的值变为4;
也就是实现了交换,但是在第一次的时候,为什么没有越界报错,65538不是已经超出了ushort的上限吗,并且程序正确的实现了数据交换。



[解决办法]
算数运算中是不会报移除错误的,溢出部分从新开始。
要显示的使用checked关键字检测移除。
C# code
checked{     ushort s1 = 65534;     ushort s2 = 4;     s1 = s1 + s2;     s2 = s1 - s2;     s1 = s1 - s2;} 

读书人网 >C#

热点推荐