exponenta event banner

Правило AUTOSAR C++ 14 M3-9-3

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

Описание

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

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

Объяснение

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

Внедрение Polyspace

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

Поиск неисправностей

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

Примеры

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

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

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

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

Группа: Основные понятия
Категория: Обязательно, Автоматизировано
Представлен в R2019a