MISRA C:2012 Rule 10.4

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

Описание

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

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

Объяснение

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

Реализация Polyspace

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

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

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

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

Дополнительное сообщение в отчете

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

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

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

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

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