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

Неявное интегральное преобразование не должно изменять со знаком из базового типа

Описание

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

Неявное интегральное преобразование не должно изменять со знаком из базового типа.

Объяснение

Некоторые преобразования от со знаком до типов данных без знака могут привести к заданному реализацией поведению. Вы видите неожиданные результаты преобразования.

Реализация Polyspace

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

Средство проверки принимает тот ptrdiff_t целое число со знаком.

Обменивайтесь сообщениями в отчете

Неявное интегральное преобразование не должно изменять со знаком из базового типа.

Неявное преобразование одного из двоичного файла + операнды, базовыми типами которых является typename_1 и typename_2.

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

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

Примеры

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

typedef char int8_t;
typedef unsigned char uint8_t;

void func()
  {
    int8_t s8;
    uint8_t u8;

    s8 = u8; //Noncompliant
    u8 = s8 + u8; //Noncompliant
    u8 = static_cast< uint8_t > ( s8 ) + u8; //Compliant
}

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

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

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

Введенный в R2013b