c++ - b/w 1==n&1 和 n&1==1 的区别,n 是一个 unsigned int

标签 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;
}

这个有时行不通!我猜想 1 使用 uint32_t 计算时出现问题,但我无法清楚地理解这一点。

最佳答案

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

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

关于c++ - b/w 1==n&1 和 n&1==1 的区别,n 是一个 unsigned int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31490996/

相关文章:

c++ - 将 userData 从回调开始传递到回调结束

java - preincrement postincrement 优先级问题

c - C中2个微 Controller 之间的执行同步

casting - C++17: "operator with precedence below cast"在 "fold"概念中是什么意思?

java - 使用评估顺序来检查空值是不好的做法吗?

c++ - 如何在可能是任何类的属性的 void 函数上创建 typedef?

c++ - 所有类型的零值?

c++ - 使用递归删除字符串上的所有非数字

c++ - C 和 C++ 中的快速 7x7 2D 中值滤波器

c - getrlimit() 返回错误值?