mav*_*.01 1 c++ bit-manipulation bit bitwise-operators bitwise-and
由于某些原因,在 C++ 中,表达式if(!(n & 1))和if(n & 1 == 0)似乎不等价。
if(!(n & 1))
if(n & 1 == 0)
有人可以解释为什么会发生这种情况吗?
Azi*_*ziz 14
if(!(n & 1))将评估 的true 最低有效位是否n为1。
true
n
1
if(n & 1 == 0)相当于if(n & (1 == 0)), 将会成为,永远if (n & 0)是。false
if(n & (1 == 0))
if (n & 0)
false
查看运算符优先级表,您将看到==优先级&。
==
&
Jos*_*ica 9
由于运算符优先级。n & 1 == 0被解析为n & (1 == 0), not (n & 1) == 0。
n & 1 == 0
n & (1 == 0)
(n & 1) == 0
归档时间:
3 年,7 月 前
查看次数:
277 次
最近记录: