读书人

2个有关问题

发布时间: 2012-02-16 21:30:36 作者: rapoo

2个问题
main()
{int s=32;s^=32;
printf( "%d ",s);
getch();
}
为什么得0,s^=32什么意思啊?


#include "stdio.h "
int f(int a[],int n)
{if(n> 1)
{return a[0]+f(a+1,n-1); }
else return a[0];
}
int main(void)
{int aa[10]={1,2,3,4,5,6,7,8,9,10},s;
s=f(aa+2,4); printf( "%d ",s);
getch();
}
我算得12啊!(3+4+5)
为什么答案得18呢,18是怎么得来的?return a[0]+f(a+1,n-1)有什么用啊?

[解决办法]
1)

s^=32

就是

s = s ^ 32

^是异或的意思,就是不同的为1,相同为0

s 和 s 每个2进值位都相同,所以结果为 0
[解决办法]
return a[0]+f(a+1,n-1)有什么用啊?

----------------递归相加
[解决办法]
楼上看过来,32^3 是 100000^000011 = 100011 = 35 。还有什么问题不?!
楼主该结贴了

读书人网 >C语言

热点推荐