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)の目的は何ですか?