Привет, я новичок в c и c++ и полностью смущен этими строками кодов, мне не нужно знать результат, просто хочу правильно понять вторую строку, следующий код
float f = 7.0;
short s = * (short * )&f;
Насколько я знаю, вы интерпретируете первые 16 бит поплавка как короткие.
Что происходит: сначала вы получаете адрес float, затем вы конвертируете этот указатель в short*
указатель short*
, это делается для того, чтобы вы брали 16
бит за раз, а не 32
. Наконец, вы запрашиваете указатель на значение.
Поскольку 7.0
представлен как (http://www.h-schmidt.net/FloatConverter/IEEE754.html):
00000000 00000000 01110000 01000000
Результат равен 0
если вы сделали второй короткий, это будет 16 496
Например, если вы будете использовать:
float f = 7.0068;
то результатом будет: 14 261