ushort越界有关问题,求教育
ushort越界问题,求教育求教育:C# codeushort s1 65534 ushort s2 4 s1 s1 + s2 s2 s1 - s2 s1
ushort越界问题,求教育
求教育:
C# codeushort s1 = 65534; ushort s2 = 4; s1 = s1 + s2; s2 = s1 - s2; s1 = s1 - s2;
第一次,s1的值变为2;
s2的值变为65534;
第二次,s1的值变为4;
也就是实现了交换,但是在第一次的时候,为什么没有越界报错,65538不是已经超出了ushort的上限吗,并且程序正确的实现了数据交换。
[解决办法]算数运算中是不会报移除错误的,溢出部分从新开始。
要显示的使用checked关键字检测移除。
C# codechecked{ ushort s1 = 65534; ushort s2 = 4; s1 = s1 + s2; s2 = s1 - s2; s1 = s1 - s2;}