MISRA C++:2008 Rule 3-9-3

Базовые битовые представления значений с плавающей точкой не должны использоваться

Описание

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

Базовые битовые представления значений с плавающей точкой не должны использоваться.

Объяснение

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

Реализация Polyspace

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

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

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

Примеры

расширить все

float fabs2(float f) {
    unsigned int* ptr = reinterpret_cast <unsigned int*> (&f); //Noncompliant
    *(ptr + 3) &= 0x7f;
    return f;
}

В этом примере reinterpret_cast пытается привести значение с плавающей точкой к целому числу и получить доступ к базовому битовому представлению значения с плавающей точкой.

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

Группа: Основные концепции
Категория: Требуемая
Введенный в R2013b