根据microsoft HIWORD宏从指定的32 位值中检索高位字。
宏的原始定义是:
#define HIWORD(l) ((WORD)((((DWORD_PTR)(l)) >> 16) & 0xffff))
例如,如果传递的参数是一个unsigned long
值0x12345678,则返回结果是0x1234
重写宏如下:
#define MYHIWORD(l) ((WORD)(((DWORD_PTR)(l)) >> 16))
返回的结果是相同的值0x1234
我的问题:
当传递相同的参数时,为什么两个宏都返回相同的结果?
第一个宏中AND操作(& 0xffff)的目的是什么?