Значение выражения не должно быть брошено к несоответствующему существенному типу
Значение выражения не должно быть брошено к несоответствующему существенному типу.
Преобразование между типами переменных
От | |||||||
Boolean | символ | перечисление | со знаком | без знака | плавание | ||
К | Boolean | Избежать | Избежать | Избежать | Избежать | Избежать | |
символ | Избежать | Избежать | |||||
перечисление | Избежать | Избежать | Избежать | Избежать | Избежать | Избежать | |
со знаком | Избежать | ||||||
без знака | Избежать | ||||||
плавание | Избежать | Избежать |
Некоторые несоответствующие явные броски:
В C99, результате броска присвоения на _Bool
всегда 0 или 1. Этот результат не обязательно имеет место при кастинге к другому типу, который задан как по существу Boolean.
Бросок к существенному перечислимому типу может привести к значению, которое не лежит в наборе констант перечисления для того типа.
Бросок от существенного Boolean до любого другого типа вряд ли будет значим.
Преобразование между типами с плавающей точкой и типами символов не значимо, когда нет никакого точного отображения между этими двумя представлениями.
Некоторые приемлемые явные броски:
Изменить тип, в котором выполняется последующая арифметическая операция.
Обрезать значение сознательно.
Сделать преобразование типов явным в интересах ясности.
Для получения дополнительной информации о существенных типах смотрите MISRA C:2012 Rule 10.1
.
Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.
Группа: существенная модель типа |
Категория: консультация |
Категория AGC: консультация |