8
我有以下的片的示例代码:C#UINT到USHORT溢出像在本地C
UInt16 a = 0x3A;
UInt16 b = 0xFFDF;
UInt16 result = Convert.ToUInt16(a - b);
线3个误差随溢出异常。但是,我想要达到相同的结果,就像我会减去C中的2个无符号短裤并且它们超过/下溢。
什么是最合适的方式来实现这一目标?
我有以下的片的示例代码:C#UINT到USHORT溢出像在本地C
UInt16 a = 0x3A;
UInt16 b = 0xFFDF;
UInt16 result = Convert.ToUInt16(a - b);
线3个误差随溢出异常。但是,我想要达到相同的结果,就像我会减去C中的2个无符号短裤并且它们超过/下溢。
什么是最合适的方式来实现这一目标?
如下你可以掩盖低16位:
UInt16 result = Convert.ToUInt16((a - b) & 0xffff);
也可以使用[unchecked上下文](https://msdn.microsoft.com/library/a569z7k8.aspx):'USHORT结果=未选中((USHORT)(AB));' –