一行中的多个按位运算符

时间:2013-02-09 00:00:28

标签: binary operators bit-manipulation

好的,我正试图将所有这些较小的数字推入一个32位数字,全部在一行中。由于a是101,b是001,d是011,我认为所有这些或所有这些转变将返回给我101001011或331.但是cout返回1.

int main()
{
    int a, b, c, d;
    a = 5;
    b = 1;
    d = 3;
    c = 0;

    c = ( 0 || a << 8 || b << 5 || d << 2 );
    cout << c;
    system("PAUSE");
}

1 个答案:

答案 0 :(得分:2)

您正在使用逻辑“或”。你的结果是“真实的”。使用单个管道“|”

c = ( 0 | a << 8 | b << 5 | d << 2 );