请高手进来帮忙解释一句话

来源:百度知道 编辑:UC知道 时间:2024/05/10 20:22:58
key=key&0xff?key&0xff:key>>8;

请详细解释各个部分的作用 谢谢~!~

希望真正明白的人近来讲解下,请不要去把搜索来的东西放上来。

另外:哪本书有讲这方面的知识???

楼上的guojingcha弄错了
if(key&0xff) 与if(key&0xff==TRUE) 是不同的,如果key&0xff=2,而TRUE通常定义为1的
不过"&是按位与运算符,>>是移位运算符"是对的

key=key&0xff?key&0xff:key>>8;
相当于:
if(key&0xff)
{
key=key&0xff;
}
else
{
key=key>>8;
}

其功能是:
如果key的低8位有非0的值,那么key就取低8位的值
否则,将key 值向右移动8位

这不是一条简写的if语句吗?换成if语句是这样的:
if(key&0xff==TRUE)
key=key&0xff;
else
key=key>>8;
其中的&是按位与运算符,>>是移位云算符。

这个是
A=B?C:D的语句
意思是当A=B成立的时候就执行C语句,否则就执行D语句
key=key&0xff?key&0xff:key>>8的意思是
当key与key&0xff的值相等时,就执行key&0xff,不相等就执行key>>8

&是一个按位运算符,表示把key和0xff的值化为二进制后,对应位如果都为1,那个那个位的结果就是1,否则是0

>>也是按运算符,表示把key的值化为二进制后,整体向右移动8位

美国Ivor Horton的C语言入门经典第四版不错,就有讲这方的东西

高手抢分也真够快啊.

不过居然都没回答楼主最后个问题.

最基础的C语言书就有讲解,比如谭浩强的那本C语言程序设计.你这个语句里就是两东西 ?:三项运算符 , 和位运算符.

三项运算符 就在讲逻辑符号那章就有讲.