Избегание предупреждений об усечении от моего компилятора C ++ при инициализации подписанных значений - PullRequest
0 голосов
/ 18 ноября 2010

Я хотел бы инициализировать short шестнадцатеричным значением, но мой компилятор выдает предупреждения об усечении. Очевидно, он думает, что я пытаюсь установить short в положительное значение.

short my_value = 0xF00D; // Compiler sees "my_value = 61453"

Как бы вы избежали этого предупреждения? Я мог бы просто использовать отрицательное значение,

short my_value = -4083; // In 2's complement this is 0xF00D

но в моем коде гораздо понятнее использовать шестнадцатеричное.

Ответы [ 2 ]

3 голосов
/ 18 ноября 2010

Приведите константу.

short my_value = (short)0xF00D;

РЕДАКТИРОВАТЬ: Первоначальное объяснение имело смысл в моей голове, но при дальнейших размышлениях было не такТем не менее, это должно подавить предупреждение и дать вам то, что вы ожидаете.

0 голосов
/ 19 ноября 2010

Вы присваиваете значение типа int, которое не может быть коротким, отсюда и предупреждениеВы можете замолчать компилятор, используя приведение типа c, но обычно это плохая практика.

Лучше не делать этого, а присваивать отрицательное значение.Или, если шестнадцатеричное значение имеет больше смысла, переключиться на unsigned short.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...