获取错误CS0031:常量值“65535”无法转换为“短”

时间:2014-11-14 14:17:09

标签: c# c++ box2d

我在这一行收到了上述错误:

Int16 maskBits = 0xFFFF;

我这样做是因为我正在使用用C ++编写的Box2D库。 它说here

  

" categoryBits的默认值为0x0001,maskBits的默认值为0xFFFF"

我认为0xFFFF或65535是Int16的最大值?

编辑:应该是一个UInt16 duuh !!谢谢大家!

4 个答案:

答案 0 :(得分:3)

0xFFFF适用于UInt16。对于Int16,最大值为32767。

答案 1 :(得分:3)

0xFFFF肯定不是16位的有符号字面值,它至少(取决于您的语言:您标记了一对)32位,值为65535.转换为带符号的16位有符号数字将失败,因为最大值是32767。

答案 2 :(得分:1)

int16的最大值是32767,即0x7FFF

答案 3 :(得分:1)

int16的最大值是32767,因为它已签名(最小值为-32768)

您需要uint16类型(因为它是无符号的)。这将给出最大值65535(即0xFFFF)和最小值0。