exponenta event banner

MISRA C++: Правило 2008 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