Ребята! Подскажите это я неправ или глючит компилятор. Использую MSVC2008.
Исходное большое число в double представлении содержит только целую часть заведомо не помещающуюся в WORD, помещающуюся в DWORD. Из этой целой беззнаковой части мне нужно число по модулю 65536, то есть только младших два байта. Я пробовал непосредственно приведение числа double в WORD. В результате получал значение WORD = 0! Если осуществлять двухступенчатое преобразование double->DWORD->WORD, то всё работает отлично. Вот пример кода.
#include <Windows.h>
int main(int argc, char *argv[])
{
double Value = 4294967292;
WORD w = (WORD)Value; //0 - !!НЕВЕРНО!!
DWORD dw = (DWORD)Value; //4294967292
WORD w2 = (WORD)dw; //65532 - ВЕРНО
return 0;
}