Программирование ARM: решение проблем, FAQ Remark[Pa091]: operator operates on value promoted to int Fri, December 06 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


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 исчезнет.

 

Добавить комментарий


Защитный код
Обновить

Top of Page