Сужение преобразования ‘65280’ из ‘int’ в ‘short int’ внутри {}

У меня есть два массива:

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»
внутри {} [-Затемнение]

для каждого элемента, который содержит FF, например, 0xFF0D или 0xFFFF

Также я всегда получаю нарушение прав доступа.
Зачем? Как я мог это исправить?

-1

Решение

В вашей системе диапазон для short int возможно [-32768, +32767], int значение 65280 выходит за пределы диапазона, и в результате значение, хранящееся в вашем массиве, определяется реализацией.

Как уже упоминалось в комментариях, вероятно, лучшим решением является изменение типа на unsigned short который будет иметь диапазон [0, 65535] ,

2

Другие решения


По вопросам рекламы [email protected]