Посмотрите на эту простую программу:истолковать 4 байт Int как 4 байта поплавок
#include <iostream>
using namespace std;
int main()
{
unsigned int i=0x3f800000;
float* p=(float*)(&i);
float f=*p;
cout<<f;
}
Это то, что я ожидаю от программы:
- Последняя строка: мы должны видеть
f
на выходе , - Предыдущая:
f
- это значение, на которое указываетp
. - Предыдущая:
p
указывает на значение, которое находится в адресе переменной с именемi
. (Т.е. к значениюi
) i
является0x3f800000
Так что ожидаем увидеть 0x3f800000
в выходе, но Он печатает 1
вместо этого. Зачем?
[email protected]:~$ ./a.out
1
[email protected]:~$
Если вы распечатываете поплавок, вы должны ожидать увидеть поплавок, а не шестнадцатеричный. Эксперимент с поплавком f = static_cast (i) и float f = * reinterpret_cast (&i); –
вчера у нас этот вопрос не был –
@MattMcNabb Я действительно не знаю, как вам лучше знать, около 80 заданных вопросов в день в этом теге! :) Я уже не спрашивал об этом – Abraham