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