Фигня с приведением double к WORD.
От: far-far  
Дата: 17.09.09 12:17
Оценка:
Ребята! Подскажите это я неправ или глючит компилятор. Использую 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;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.