Страница 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) ) в соответствии с порядком байт для многобайтовых чисел в данной архитектуре.
Херню, короче, выдаст...