gpt4 book ai didi

c - 通过C宏检索高位字的正确方法

转载 作者:行者123 更新时间:2023-11-30 15:47:19 24 4
gpt4 key购买 nike

根据微软HIWORD宏,从指定的32位值中检索高位字。

宏的原始定义是:

#define HIWORD(l)  ((WORD)((((DWORD_PTR)(l)) >> 16) & 0xffff))

例如,如果传递的参数是unsigned long0x12345678,则返回结果为0x1234

重写宏如下:

#define MYHIWORD(l) ((WORD)(((DWORD_PTR)(l)) >> 16))

返回的结果是相同的值0x1234

我的问题:

  • 当传递相同的参数时,为什么两个宏返回相同的结果?

  • 第一个宏中 AND 操作(& 0xffff)的目的是什么?

最佳答案

What is purpose of AND operation (& 0xffff) in first macro ?

这不是必需的,因为强制转换会消除高位。我想它只是为了(向读者)强调一些位被删除的事实。

关于c - 通过C宏检索高位字的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17513127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com