Remark[Pa091]: operator operates on value promoted to int |
|
Добавил(а) microsin
|
Remark[Pa091]: operator operates on value promoted to int (with possibly unexpected result)
C:\путь_до_исходного_кода\модуль.c номер_строки
Это предупреждение довольно важное, которое говорит о том, что оператор работает со значением, у которого возможно неожиданно для программиста поменялся тип. Пример такого кода:
unsigned char var1 = 0x14;
unsigned char var2 = 0x76;
//Действия, которые возможно меняют var1 или var2
// ...
if (var1 & ~var2)
{
//какие-нибудь действия
}
В этом коде оператор инверсии ~ считает, что его операнд будет целым числом со знаком. В результате var2 будет преобразовано в из 8-битного числа в 32-битное.
Если это действительно именно то, что хотите, то можете убрать это предупреждение компилятора с помощью явного указания преобразования типа:
if (var1 & ~(unsigned int)var2)
{
//какие-нибудь действия
}
После этого предупреждение Pa091 исчезнет. |