2016-01-11 24 views
8

我有以下的片的示例代码:C#UINT到USHORT溢出像在本地C

UInt16 a = 0x3A; 
UInt16 b = 0xFFDF; 
UInt16 result = Convert.ToUInt16(a - b); 

线3个误差随溢出异常。但是,我想要达到相同的结果,就像我会减去C中的2个无符号短裤并且它们超过/下溢。

什么是最合适的方式来实现这一目标?

回答

9

如下你可以掩盖低16位:

UInt16 result = Convert.ToUInt16((a - b) & 0xffff); 
+0

也可以使用[unchecked上下文](https://msdn.microsoft.com/library/a569z7k8.aspx):'USHORT结果=未选中((USHORT)(AB));' –