根据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)的目的是什么?
答案 0 :(得分:1)
第一个宏中AND操作(& 0xffff)的目的是什么?
没有必要,因为演员阵容将消除高阶位。我想这只是为了突出(向读者)删除位的事实。