@LoonTiG

Что значит int i = *(int*)&x;?

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

Помогите разобраться, что значит обозначение переменных в таком формате?
  • Вопрос задан
  • 2971 просмотр
Пригласить эксперта
Ответы на вопрос 2
Ni55aN
@Ni55aN
&x - берется адрес (указатель), по которой находится значение переменной x
(int*) - обозначение того, что со значением адреса, который получен ранее, нужно работать как с intтипом (хотя ранее то был float)
* - получаем значение по этому адресу, а оно уже будет не float, а int. Что в результате сохраняет в i совсем другое число. Только лишь в бинарном представлении ничего не изменилось
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
*(int*)&x - взять адрес переменной x и разыменовать его как адрес переменной типа int.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы