Как правильно набирать поплавок для типа int и наоборот?

Код ниже выполняет быструю операцию обратного квадратного корня с помощью некоторых битовых хаков. Алгоритм, вероятно, был разработан Silicon Graphics в начале 1990-х годов и появился в Quake 3.больше информации

Однако я получаю следующеепредупреждение от компилятора GCC C ++: разыменовываемый указатель типа будет нарушенстрогий ступенчатости правила

Должен ли я использоватьstatic_cast, reinterpret_cast или жеdynamic_cast вместо этого в таких ситуациях?

float InverseSquareRoot(float x)
{
    float xhalf = 0.5f*x;
    int32_t i = *(int32_t*)&x;
    i = 0x5f3759df - (i>>1);
    x = *(float*)&i;
    x = x*(1.5f - xhalf*x*x);
    return x;
}

Ответы на вопрос(7)

Ваш ответ на вопрос