问:int fun(int n){ if(!n)return 0;return n&1+fun(n>>1); }
和
int fun(int n){ if(!n)return 0;return fun(n>>1)+n&1; }
返回结果不一样?求解释
测试程序:#include
int fun(int n){ if(!n)return 0;return n&1+fun(n>>1); }
int main()
{
int n=3,t;
for(scanf("%d",&t);t--&&scanf("%d",&n); printf("%d\n",fun(n^(n+1))));
return 0;
}
答:&的优先级比+低,好久没有碰到这种一眼没发现的优先级问题了
阅读(800) | 评论(0) | 转发(0) |