Cи шники, что делает это выражение

Ответить
Аватара пользователя
Гость

Cи шники, что делает это выражение

Сообщение Гость »

и что получим на выходе, и почему? :)

Код: Выделить всё

float fOne = 89;
short sOne = *(short *) &fOne; 

cout << sOne <<endl;

Аватара пользователя
Гость

Re: Cи шники, что делает это выражение

Сообщение Гость »

Гость писал(а):и что получим на выходе, и почему? :)

Код: Выделить всё

float fOne = 89;
short sOne = *(short *) &fOne; 

cout << sOne <<endl;

Зависит от компилятора. Гы. И от железа. Внятный компилятор выдаст верхние или нижние 16 бит (или сколько там short у данного компилятора) fp представления числа 89. GNU может выдать вообще что попало, ссылаясь на пункт из стандарта что результат "зависит от реализации".
Аватара пользователя
Вий
Сообщения: 6237
Зарегистрирован: 22.09.2011 13:00
Ник с it-ru.de: верифицирован
Где: Минск
Род занятий: Программист ;)
Интересы: разные...

Re: Cи шники, что делает это выражение

Сообщение Вий »

Код выдаст целое знаковое число, соответствующее как минимум первым двум байтам бинарного представления числа 89 в формате с плавающей точкой (скорее всего IEEE 754 - но не обязательно, а если IEEE 754 - то не обязательно всегда в single precision (пламенный привет MSVC) ) в соответствии с порядком байт для многобайтовых чисел в данной архитектуре.

Херню, короче, выдаст...
Вий есть колоссальное создание простонародного воображения...

"...Когда хотят сделать людей добрыми, мудрыми, свободными, воздержанными, великодушными, то неизбежно приходят к желанию их всех перебить." Анатоль Франс
Ответить