Оба операнда оператора, в котором выполняются обычные арифметические преобразования, должны иметь ту же существенную категорию типа
Примечание
Используйте Bug Finder вместо Code Prover для проверки правил кодирования. Поддержка кодирования правил, регистрируясь в Code Prover будет удалена в будущем релизе. См. Вопросы совместимости.
Оба операнда оператора, в котором выполняются обычные арифметические преобразования, должны иметь ту же существенную категорию типа.
Использование неявных преобразований между типами может привести к непреднамеренным результатам, включая возможную потерю значения, знака или точности.
Для получения дополнительной информации о существенных типах смотрите MISRA C:2012 Rule 10.1
.
Средство проверки повышает нарушение этого правила, если два операнда операции имеют различные существенные типы. Сообщение средства проверки утверждает типы, обнаруженные на двух сторонах операции.
Средство проверки не повышает нарушение этого правила:
Если один из операндов является постоянным нулем.
Если один из операндов является константой со знаком, и другой операнд без знака, и константа со знаком имеет то же представление как свой эквивалент без знака.
Например, оператор u8b = u8a + 3;
, где u8a
и u8b
unsigned char
переменные, не нарушает правило потому что константы 3
и 3U
имейте то же представление.
Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.
Группа: существенная модель типа |
Категория: необходимый |
Категория AGC: консультация |