c语言程序设计题 请高人指点

来源:百度知道 编辑:UC知道 时间:2024/05/15 03:58:42
main()
{char x=4,y=5,z;
printf
("%d",z=x^y<<2);
}
难道答案错了

10100
0100
算完得01111
可我算完得17为什么

0100
4的二进制就是0100
5的就是0101
^是位运算符,得0001
<<是左移运算符,所以最后是0100
最后是16吗。呵呵
^的运算规则是参加的两个二进位同号,则结果为假,异号就为真,如:0^0=1,0^1=0.
<<是左翼运算符就是比如说<<2那么二进制右数第二位左移两位,后面的添0

反正就是那么算的啊。。不清楚!!!哦!<<的运算及高于^所以先算<<,这回就对了,你自己算一下把
4的二进制就是0000 0100 //两个字节占8位
5的就是0000 0101
因为先算0000 0101<<2,得0001 0100
之后就是0001 0100^0000 0100=0001 0000
那不就是16吗

它是把数字先转化成二进制,然后再进行相应的操作,应该这些操作符的含义我已经忘了,所以能告诉你的就只有这么多了。

^是按位做异或运算,相同为0,不同为1
<<是左移运算符,把2进制数左移,右边末尾添加零

答案是16
它是先把5(0101)左移两位10100。再求^运算:上边说的很好,只不过没注意运算符的优先级