【发布时间】:2015-02-08 01:59:51
【问题描述】:
我有两个数组:
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};
当我编译时,我收到以下消息:
[警告] 将 '65280' 从 'int' 缩小到 'short int' 的转换 在 { } [-Wnarrowing]
内
对于每个包含 FF 的元素,例如 0xFF0D 或 0xFFFF
另外,我总是遇到访问冲突。 为什么?我该如何解决?
【问题讨论】:
-
看起来你想要
unsigned short。 -
您的 sn-p 代码没有帮助。您的代码中的 int 和 short int 之间没有进行转换。当我运行它时,这段代码的 sn-p 也没有给我任何错误
-
@IrrationalPerson:实际上,
0x7FFF上面的每个文字都有一个。 -
这是因为(有符号的)short 范围仅在 [-32,768, 32,767] 之间。转换高于该值的任何值都将是缩小转换。
-
@MatteoItalia: 所有整数字面量的类型为
int,它们都被隐式转换为short。