这是一个来自leetcode的程序问题.it给出一个无符号的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计算时,我想有些地方不对劲,但我不能清楚地理解这一点。
发布于 2015-07-18 12:15:11
==比&具有更高的优先级。因此,
n&1==1是n & (1==1),而1==n&1是(1==n) & 1。https://stackoverflow.com/questions/31490996
复制相似问题