错误:左值作为赋值的左操作数所需的左值(C)

时间:2013-11-14 08:57:27

标签: c++ c

我看到这个问题有很多不同的答案,看了很多但我找不到问题的答案。

我得到的错误是

bitarray.c:27:19: error: lvalue required as left operand of assignment

(newArr << i) ^= 1;

有什么想法吗? 感谢

2 个答案:

答案 0 :(得分:3)

您正尝试从操作中为结果分配另一个结果。请尝试以下正确方法:

newArr = (newArr << i) ^ 1;

这个想法是你必须有一个有效的lvvalue和“&lt;&lt;”的临时结果不是有效的。你需要一个像newArr这样的变量。关于SO的以下答案解释了与这种情况相关的许多术语:

What are rvalues, lvalues, xvalues, glvalues, and prvalues?

希望我对这个问题有所了解!

答案 1 :(得分:0)

“&LT;&LT;”是一个二进制运算符,就像“+”或“ - ”。 需要将其分配给变量。 对于Eg。你不能只写这个                A + B; 正确的方法是                c = a + b;