差异b / w 1 == n&1和n&1 == 1,n是无符号整数
这是来自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计算出来有问题,但我无法理解这一点。
==
优先级高于&
。 从而,
-
n&1==1
是n & (1==1)
,而 -
1==n&1
是(1==n) & 1
。