差异b / w 1 == n& 1和n& 1 == 1,n是无符号整数

时间:2015-07-18 12:09:23

标签: c++ c operator-precedence

这是一个program problem from leetcode。它给出一个unsigned int n,要求你返回位'1'的数字;

int hammingWeight(uint32_t n) {
int num=0;
for(;n!=0;n=n>>1)
{
    if(n&1==1)
    {
        num++;
    }
}
return num;
}

这完美无缺,但

int hammingWeight(uint32_t n) {
int num=0;
for(;n!=0;n=n>>1)
{
    if(1==n&1)
    {
        num++;
    }
}
return num;
}

这个有时候无法工作!我想如果用uint32_t计算出来有问题,但我无法理解这一点。

1 个答案:

答案 0 :(得分:13)

==的优先级高于&。因此,

  • n&1==1n & (1==1),而
  • 1==n&1(1==n) & 1