LOBYTE(nValue)和LOBYTE(LOWORD(nValue))的区别?

时间:2011-01-17 06:43:02

标签: c++

两个陈述有什么区别? 这里假设nValue是4个字节的整数。 我的信念是两者都是一样的。

3 个答案:

答案 0 :(得分:2)

我会说他们都产生完全相同的结果。 BYTE和WORD都是无符号的(假设是标准的Windows定义)。因此,如果nValue是有符号或无符号的,它应该没有任何区别。在所有情况下,您应该得到nValue的最低8位。

答案 1 :(得分:2)

他们完全相同。

答案 2 :(得分:1)

如果您指的是Microsoft Win32的宏,则两者完全相同:

//from Windef.h
#define LOWORD(l)           ((WORD)(((DWORD_PTR)(l)) & 0xffff))
#define LOBYTE(w)           ((BYTE)(((DWORD_PTR)(w)) & 0xff))

然而,LOBYTE(nValue)在语法上更好(或者也许在性能方面也是如此),因为它会立即为您提供结果。