首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >(n& 1)与n&1 == 0在C++中的差异

(n& 1)与n&1 == 0在C++中的差异
EN

Stack Overflow用户
提问于 2022-04-28 14:28:55
回答 3查看 187关注 0票数 1

由于某些原因,在C++中,if(!(n & 1))if(n & 1 == 0)的表达式似乎并不等价。

有人能解释一下为什么会这样吗?

EN

回答 3

Stack Overflow用户

发布于 2022-04-28 14:31:42

  • 如果n 1.最不重要,if(!(n & 1))将对true 进行评估。
  • if(n & 1 == 0)等价于if(n & (1 == 0)),后者将成为if (n & 0),即 will

查看运算符优先表,您将看到==先于&

票数 13
EN

Stack Overflow用户

发布于 2022-04-28 14:30:33

因为运算符优先。n & 1 == 0被解析为n & (1 == 0),而不是(n & 1) == 0

票数 9
EN

Stack Overflow用户

发布于 2022-05-03 16:32:11

通常(n&1),如果我们假设n是整数示例2,那么首先它将转换为32位整数,因此2= 000000000000000010,而另一方面,我们现在使用"&“运算符,返回我们0(你只需做一个二进制乘法)。现在,如果我们以3=00000000000000000000000000000011为例,这里的输出为1。

所以,我们基本上使用n&1来检查最后一个位是否被设置。(你也可以说这个数字是偶数或奇数)

现在,在您的问题中,1.if(!( n & 1 )):在这里,首先n&1将执行,而返回的值将不符合逻辑。

  1. 如果(n&1 == 0):为此,我们需要知道"==“首先执行,然后"&”将执行,因为操作符优先。所以这里(1==0)返回一个0 bcz,两个整数都是不相等的,然后我们做n& 0,如果我们用0乘以任何东西,那么它会返回0,所以它总是返回false。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72045497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档