以下程序的输出结果是:
main()
{char a=0xf0,b=03,c;
c=~a&020>>b;
printf("%x\n",c);
}
2
A = oxfo(0xF0=15*8=120),化为二进制为11110000,刚~a = 00001111,即c= 00001111 &00010000 >>3,而>>优先级大于&,所以得00001111 &00000010得00000010,按十六进制输出2
c=~a&020>>b;这个~a什么意思看不懂
09
A = oxfo,化为二进制为11110000,刚~a = 00001111,即c= 00001111 &00010000 >>3,而>>优先级大于&,所以得00001111 &00000010得00000010,按十六进制输出2
255
useryang 回复 useryang: 2
红色的代表补位的0
c转为二进制15*16+0=240;
转为二进制 11110000;
进行取反运算 00001111;
对于8进制的020化为十进制为=2*8=16;再化为二进制变成1000
所以现在柿子变成
c=(00001111)&(0000 1000 )>>03
将8进制的03转换成十进制变成3 ,所以将0000 1000向右移三位(>>的优先级要大于&)
变成
c=(00001111)&(0000001)
c=0000001化为二进制c=2化为十六进制c=0x2
rookie 回复 fzh: 16化为二进制不应该是10000吗
右移>>优先级高于&
c=~(1111 0000)&(020>>b)
c=(0000 1111)&(0001 0000)>>03
c=(0000 1111)&(0000 0010)
c=0000 0010=0x02
printf("%x\n",c)=>2
有没有兄弟解析一波
0x04
结果:2(注意运算符优先级高低)
用户登录可进行刷题及查看答案
登录后提交答案