перевод декларации кода в слова (путаница с оператором ссылки и оператором разыменования)

0

Привет, я новичок в c и c++ и полностью смущен этими строками кодов, мне не нужно знать результат, просто хочу правильно понять вторую строку, следующий код

float f = 7.0;
short s = * (short * )&f;
Теги:
pointers
dereference
reference

1 ответ

0

Насколько я знаю, вы интерпретируете первые 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню