Оператор '~' на short / char неявно приводит к int (C / gcc)
С gcc-Wconversion
предупреждение, похоже, что символы и шорты неявно преобразуются в целые.
#include
#pragma GCC diagnostic warn "-Wconversion"
void main(void)
{
short i = 1;
short j = 1;
short k = j & ~i;
printf("value %d\n", j);
}
Выдает следующее предупреждение,
test.c: In function 'main':
test.c:9:15: warning: conversion to 'short int' from 'int' may alter its value [-Wconversion]
short k = j & ~i;
^
Возвращение к короткому успокаивающему предупреждениюshort k = j & (short)~i;
но это немного странно добавлять приведение, где типы переменных уже совпадают.
Я посмотрел, если дальше и(unsigned short)~(unsigned short)0
результаты в.0xffff
В то время как~(unsigned short)0
результаты в0xffffffff
Кто-нибудь может порекомендовать хороший способ справиться с этими предупреждениями?
Помимо отключения. "-Wconversion