首页 > 解决方案 > 为什么 (int & 1 == 0) 是假的?

问题描述

这是非常简单的代码,但我不明白为什么会这样。这是我的代码。

#include <iostream>

using namespace std;

int main()
{
    for(int i = 0; i < 32; i++)
    {
    int tmp = i;
    if(tmp & 1 == 0)
        cout << '0' << endl;
    else
        cout << '1' << endl;
    }

    return 0;
}

我原以为输出将是“0101 ...”,但实际输出是“1111 ...”

但是,当我更改条件代码时

if(tmp & 1 == 1)

我期望的代码工作正常。有人能回答我为什么这两个代码会产生不同的输出吗?

标签: c++bit-manipulationbitwise-operators

解决方案


推荐阅读