首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

">>" 和 "<<"操作符的有关问题

2012-02-22 
和 操作符的问题好久没有用C,有些迷茫了unsignedlongtempIrKeyVal...if(((tempIrKeyVal 16)&

">>" 和 "<<"操作符的问题
好久没有用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类型.

热点排行