Страница 1 из 1

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

Добавлено: 02.01.2013 15:28
Гость
и что получим на выходе, и почему? :)

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

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

cout << sOne <<endl;


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

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

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

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

cout << sOne <<endl;

Зависит от компилятора. Гы. И от железа. Внятный компилятор выдаст верхние или нижние 16 бит (или сколько там short у данного компилятора) fp представления числа 89. GNU может выдать вообще что попало, ссылаясь на пункт из стандарта что результат "зависит от реализации".

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

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

Херню, короче, выдаст...