读书人

quot;gt;gt;quot; 和 quot;lt;lt;quot;操作符的有关问题

发布时间: 2012-02-22 19:36:55 作者: rapoo

">>" 和 "<<"操作符的问题
好久没有用C,有些迷茫了

unsigned long tempIrKeyVal;
.
.
.
if( ((tempIrKeyVal> > 16)&0xFFFF) == 0x01EA )

if( (tempIrKeyVal> > 16) == 0x01EA )
有什么区别,为什么要&0xFFFF ??
谢谢!

[解决办法]
你的unsigned long 肯定不止16位吧?
&0xffff就是只要后16位。
[解决办法]
就是在32位系统下,也有有符号无符号的区别.
当是个有符号数,且为负时,右移左边一般补1而不是0这时区别就出来了.
[解决办法]
(tempIrKeyVal> > 16)&0xFFFF 只需要最后16位(不管这个系统是多少位的)

[解决办法]
肯定有区别:(tempIrKeyVal> > 16)后,仍然是unsigned long类型. "&0xFFFF "后才会变成unsigned short类型.

读书人网 >C语言

热点推荐