2024-10-22 15:40:42
结果是3
解答过程:
首先算a^b
^表示异或 十进制a=1, 等于二进制0001 ;十进制b=2,等于二进制0010
异或为对应位不同时取真,故0001^0010结果为0011,即为十进制的3
再算 (a^b) & c
&表示按位与,a^b的结果为3,即二进制的0011
c=3,即二进制的0011
0011&0011=0011
何谓按位与? 这个例子来说,按位与就是从左起,第一位与第一位求与运算,第二位与第二位求与运算,以此类推,1&1=1 ,1&0=0, 0&1=0, 0&0=0 这个总该知道吧
故结果为3。
2024-10-22 10:03:57
2024-10-22 16:52:29
2024-10-22 14:26:37
scanf("%d&%d",&a,&b);这是我刚才写的程序一部分,为什么这个时候我必须键入11&22才行,而去掉&,成scanf("%d%d",&a,&b);就可以直接输入11 22就可以了
这个问题是这样的,首先,这这里,&是用作取地址符,一个变量只是一个符号,它对应于相应的地址空间(大小有所不同,比如char占一个字节地址空间,int占4个字节(32位系统)),那么你写数据的时候,是把数据写到对应的地址空间。。。。
其实这个你们初学者还是不要去深究吧,免得把你们给弄晕了,其实你们只要记住,scanf的时候要用到取地址符,而printf不需要,记住这个就足够了,等你们以后学多了,自然就懂得这些东西了,现在不用感到困扰~~~
2024-10-22 09:53:31