我最近看到了一个有人使用的开源程序
if (x & 1){
Run Code Online (Sandbox Code Playgroud)
其中x是int.我自己试了一下,据我所知,这与我们使用的效果相同
if (x == 1){
Run Code Online (Sandbox Code Playgroud)
据我所知,该&符号用于引用对象,但在这里它似乎被用作等于运算符.
我错误地认为这些是同一件事吗?或者有不同的理由使用每一个?
该语句x & 1使用按位和运算符,换句话说,逐位比较二进制级别的这两个值.该==比较是用来测试等价的,换句话说,所有位都是相同的.
是什么x & 1做的是检查在1s位置的位被设置为1.对于任何未签名的x,任何奇怪的值将显示为真实的,因为任何奇怪的值有位设置.