Sid*_*tha -1 c++ bitwise-operators c++17
我在语句中包含这两个条件if来检查是x偶数还是奇数,但似乎在偶数的情况下!(x&1)执行了主体,而没有执行它。ifxx&1==0
考虑到32 或 64 位表示中的1 & 0is和 1 ,我希望两者都给出 0 ,并且如果,比如说,是类似(偶数)的东西,那么它们的按位 和 应该产生 0。因此,我仍然不确定为什么有效。如果我有任何错误的地方,请纠正我。谢谢。0000..01x10010101100!(x&1)
这只是您面临的运算符优先级问题。
表达式中x&1 == 0,==运算符的优先级最高;它将在&操作员之前进行评估。因此,x&1 == 0将计算为x & (1 == 0),其计算结果为x & 0(始终等于 0)。
您可以在cppreference.com上找到可靠的C++ 运算符优先级表。
您可以使用括号来解决您的问题:(x & 1) == 0