Re: Фигня с приведением double к WORD.
От: kvasya  
Дата: 17.09.09 12:35
Оценка:
Здравствуйте, far-far, Вы писали:

FF>Ребята! Подскажите это я неправ или глючит компилятор. Использую MSVC2008.

FF>Исходное большое число в double представлении содержит только целую часть заведомо не помещающуюся в WORD, помещающуюся в DWORD. Из этой целой беззнаковой части мне нужно число по модулю 65536, то есть только младших два байта. Я пробовал непосредственно приведение числа double в WORD. В результате получал значение WORD = 0! Если осуществлять двухступенчатое преобразование double->DWORD->WORD, то всё работает отлично. Вот пример кода.

FF>
FF>#include <Windows.h>

FF>int main(int argc, char *argv[])
FF>{
FF>    double    Value = 4294967292;
FF>    WORD    w = (WORD)Value;    //0 - !!НЕВЕРНО!!
FF>    DWORD    dw = (DWORD)Value;    //4294967292
FF>    WORD    w2 = (WORD)dw;    //65532 - ВЕРНО

FF>    return 0;
FF>}
FF>


If the result is out of range, the behavior is undefined
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.