MISRA C:2012 Rule 10.5

Значение выражения не должно быть приведено к неподходящему существенному типу

Описание

Определение правила

Значение выражения не должно быть приведено к неподходящему существенному типу.

Объяснение

Преобразование между типами переменных

 От
Булевсимволenumподписанныйнеподписанныйплавание
КомуБулев ИзбежатьИзбежатьИзбежатьИзбежатьИзбежать
символИзбежать    Избежать
enumИзбежатьИзбежатьИзбежатьИзбежатьИзбежатьИзбежать
подписанныйИзбежать     
неподписанныйИзбежать     
плаваниеИзбежатьИзбежать    

Некоторые неуместные явные отливки:

  • В C99, результат приведения назначения к _Bool всегда 0 или 1. Этот результат не обязательно является случаем при приведении к другому типу, который определяется как по существу логический.

  • Приведение к существенному типу перечисления может привести к значению, которое не находится в наборе констант перечисления для этого типа.

  • Приведение от существенного логического к любому другому типу вряд ли будет значимым.

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

Некоторые приемлемые явные отливки:

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

  • Чтобы обрезать значение преднамеренно.

  • Сделать преобразование типа явным в интересах ясности.

Для получения дополнительной информации о важных типах смотрите MISRA C:2012 Rule 10.1.

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

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

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

Группа: Модель Essential Type
Категория: Консультационные
Категория СМЖЛ: Консультационная