Правило 10.4 MISRA C:2012

Оба операнда оператора, в котором выполняются обычные арифметические преобразования, должны иметь ту же существенную категорию типа

Описание

Управляйте определением

Оба операнда оператора, в котором выполняются обычные арифметические преобразования, должны иметь ту же существенную категорию типа.

Объяснение

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

Реализация Polyspace

Polyspace® не производит нарушение этого правила:

  • Если один из операндов является постоянным нулем.

  • Если один из операндов является константой со знаком, и другой операнд без знака, и константа со знаком имеет то же представление как свой эквивалент без знака.

    Например, оператор u8b = u8a + 3;, где u8a и u8b являются переменными unsigned char, не нарушает правило, потому что константы 3 и 3U имеют то же представление.

Обменивайтесь сообщениями в отчете

Операнды оператора operator_name должны иметь ту же существенную категорию типа.

Поиск и устранение проблем

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Проверяйте информацию

Группа: существенная модель типа
Категория: необходимый
Категория AGC: консультация
Язык: C90, C99