C语言问题

书上说&&求与,&是取地址,但为什么
int a=0xffaa;
a=a&&ffff;
printf("%x\n",a);
输出是1,而换成a=a$0xffff,输出则是ffaa,这样说来&才是求与

你记错了哦
&&是逻辑与运算符,&作为位运算符是双目运算符,作为取地址运算符是单目运算符。
int a=0xffaa;
a=a&&ffff;
//&&为逻辑运算符号,运算结果为真(1)或为假(0),运算时一假即假即值为0,两个都是真才为真即值为1.此处 ffaa和ffff都是非0值,都为真,结果为真,最后a的值为真(即1).

而a=a&0xffff中的&为位运算,
因为ffaa的二进制表示为(1111 1111 1010 1010)
ffff的二进制吧表示为(1111 1111 1111 1111),
位运算后的值仍为(1111 1111 1010 1010),即ffaa。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-02-15
a = a && ffff 这里的 (a && ffff)结果只可能是0和1因为是逻辑运算`
当a 或ffff都为真时就把表达式的直1赋给a 否则把0赋给a
第2个回答  2009-02-15
&&是逻辑求与,而&是按位与
非0为真,0为假
例如:1&&0=0
1&&1=1;
而按位与是这样的:110101&100111= 110101
&100111
= 100101
第3个回答  2009-02-15
&是位运算,按位求与
&&是逻辑运算,运算中只有0和非0
&还可以是取地址,具体是啥,得看具体语句

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网