左值作为赋值的左操作数

时间:2014-04-11 18:39:07

标签: variable-assignment lvalue operand

我的代码在这里有一个错误,我不知道如何修复它,所以如果你能帮助我,那就太棒了。

这是我的代码:

unsigned reverse(unsigned value)
{
    unsigned res;
    int l_mask, r_mask;
    l_mask = 0x00000002, r_mask = 0x40000000;
    for(res = 0; r_mask != 0x00000001; r_mask >>=1, l_mask <<= 1)
        l_mask & value == 0 ? res &= ~r_mask : res |= r_mask;
    return res;
}

错误是:

lvalue required as left operand of assignment

我已经看到了其他帖子和问题,但似乎与我遇到的问题无关。

如果有人能帮助我,我将非常感激

1 个答案:

答案 0 :(得分:1)

要解决此问题,请执行以下操作:

 l_mask & value == 0 ? (res &= ~r_mask) : (res |= r_mask);

三元条件(?:)的优先级高于| =和&amp; =。 http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence