此操作的操作数类型异常

此操作的操作数类型错误
C/C++ code

BYTE* p=alloc...;DWORD dw=...;  ULONG IdxPt=...;
do{
Sleep(2000);
}while(p[IdxPt]!=(dw&0xff0000) || p[IdxPt+1]!=(dw&0xff00) || p[IdxPt+2]!=(dw&0xff));


需要将dw每8位分别判断值
dw&0xff0000等用法有何不当?

------解决方案--------------------
LOWORD/HIWORD/LOBYTE()/HIBYTE();
------解决方案--------------------
lz说的是用宏

不过你也可以自己实现

比如:按位与运算,

short c=0x1230; //16进制

c&=0x00ff;


这样的话,可以获得你的低8位,其他就是移位,再与运算

楼上的方法较好,是windows 提供的宏


------解决方案--------------------
dw&0x00ff0000ul
------解决方案--------------------
while(p[IdxPt]!=(dw&0xff0000) || p[IdxPt+1]!=(dw&0xff00) || p[IdxPt+2]!=(dw&0xff));
p是指向字节的指针,你位与之后,要进行移位操作