C++(x == 1)与(x&1)相同

tom*_*012 -5 c++

我最近看到了一个有人使用的开源程序

if (x & 1){
Run Code Online (Sandbox Code Playgroud)

其中x是int.我自己试了一下,据我所知,这与我们使用的效果相同

if (x == 1){
Run Code Online (Sandbox Code Playgroud)

据我所知,该&符号用于引用对象,但在这里它似乎被用作等于运算符.

我错误地认为这些是同一件事吗?或者有不同的理由使用每一个?

tad*_*man 6

该语句x & 1使用按位和运算符,换句话说,逐位比较二进制级别的这两个值.该==比较是用来测试等价的,换句话说,所有位都是相同的.

是什么x & 1做的是检查在1s位置的位被设置为1.对于任何未签名的x,任何奇怪的值将显示为真实的,因为任何奇怪的值有位设置.