左值需要作为赋值的左操作数

Posted

技术标签:

【中文标题】左值需要作为赋值的左操作数【英文标题】:lvalue required as left operando of assignment 【发布时间】:2014-04-11 18:39:06 【问题描述】:

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

这是我的代码:

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

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

如果有人可以帮助我,我将不胜感激

【问题讨论】:

始终使用您正在使用的编程语言进行标记。您选择的标签总共有 3 个关注者。 (包含完整的错误消息也会有所帮助,包括错误所在的行)。 【参考方案1】:

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

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

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

【讨论】:

以上是关于左值需要作为赋值的左操作数的主要内容,如果未能解决你的问题,请参考以下文章

C ++ - 左值需要作为赋值的左操作数[重复]

条件运算符中的“错误:需要左值作为赋值的左操作数”

错误:需要左值作为赋值的左操作数,我收到此错误啥是左值和右值以及如何删除此错误

需要左值作为 ios 中赋值的左操作数

使用 C++ 时需要左值作为赋值错误的左操作数

左值需要作为 c 中赋值错误的左操作数