1

我有两个数组:

short GMobiles[18] = {0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, 0x00FF, 0xFFFF};
short GMobiles2[18] = {0xFF00, 0xFF01, 0xFF02, 0xFF03, 0xFF04, 0xFF05, 0xFF06, 0xFF07, 0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F, 0xFFFF, 0xFFFF};

编译时,我收到以下消息:

[警告] 在 { } [-Wnarrowing] 内缩小从 'int' 到 'short int' 的 '65280' 转换

对于每个包含 FF 的元素,例如 0xFF0D 或 0xFFFF

另外,我总是遇到访问冲突。为什么?我怎么能解决这个问题?

4

1 回答 1

4

在您的系统上,范围short int可能是[-32768, +32767]. 该int65280超出范围,因此存储在数组中的值是实现定义的。

unsigned short正如评论中提到的,可能最好的解决方案是将具有 range的类型更改为[0, 65535]

于 2015-02-08T02:17:03.407 回答