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

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

我得到的错误是

bitarray.c:27:19: error: lvalue required as left operand of assignment (newArr << i) ^= 1; 

有任何想法吗? 谢谢

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

 newArr = (newArr << i) ^ 1; 

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

什么是rvalues,lvalues,xvalues,glvalues和prvalues?

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

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