MISRA C++:2008 Rule 5-0-6

Неявное интегральное или преобразование с плавающей точкой не должно уменьшать размер базового типа

Описание

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

Неявное интегральное или преобразование с плавающей точкой не должно уменьшать размер базового типа.

Объяснение

Преобразование, которое уменьшает размер базового типа, может привести к потере информации. Если вы явным образом не бросаете к более узкому типу, не ясно, предназначается ли потеря информации.

Реализация Polyspace

Средство проверки отмечает неявные преобразования, которые уменьшают размер типа.

Если преобразование до более узкого целого числа с различным знаком, то правило 5-0-4 более приоритетно по сравнению с правилом 5-0-6. Только правило 5-0-4 показывают.

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

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

Примеры

развернуть все

typedef signed short int16_t;
typedef signed int int32_t;

void func ( )
  {
    int16_t   s16;;
    int32_t   s32;
    s16 = s32;   //Noncompliant
    s16 = static_cast< int16_t > ( s32 ); //Compliant
  }

В этом примере нарушено правило, когда тип неявно преобразован в более узкий тип. Нарушение не происходит, если преобразование является явным.

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

Группа: Выражения
Категория: необходимый
Введенный в R2013b