我尝试理解条件语句与位运算符的工作原理。 通过以下方式可以检查一个数字是偶数还是奇数:
#include <iostream>
#include <string>
using namespace std;
string test()
{
int i = 8; //a number
if(i & 1)
return "odd";
else
return "even";
}
int main ()
{
cout << test();
return 0;
}
我不明白的是 if 条件语句如何工作。在这种情况下,如果 i = 8,则在 If 语句中执行“1000 & 1”,这应该返回 1000,等于 8。
如果 i = 7,则在 if 语句中应该执行“111 & 1”,这会返回 111,等于 7。
为什么 if(8)将返回“even”,而if(7)返回“odd”?我想要了解 if 语句在处理位运算符时检查真假的条件。
当我写下这个问题时,我想到它是否因为它实际上正在执行
for 8: 1000 & 0001 which gives 0
for 7: 0111 & 0001 which gives 1?
x & y
返回结果的假设是错误的。 - chris