我在
if
语句中拥有这两个条件来检查 x
是偶数还是奇数,但是 !(x&1)
似乎在 if
为偶数的情况下执行 x
的主体,而 x&1==0
没有执行。
考虑到
1 & 0
是 0
,而 32 或 64 位表示中的 1 是 000..01
,并且如果说 x
类似于 10010101100
(偶数),那么它们的位-明智的,应该产生 0。因此,我仍然不确定为什么 !(x&1)
有效。如果我有任何错误的地方,请纠正我。
谢谢你。
这只是您面临的运算符优先级问题。
在表达式x&1 == 0中,
==
的优先级最高,会先于&
执行。因此,x&1 == 0 将计算为 x & (1 == 0),其计算结果为 x & 0(始终等于 0)。
您可以在这里找到官方的 C++ 运算符优先级表。
您可以使用括号来解决您的问题:(x & 1) == 0