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