错误:需要左值作为赋值运算符的左操作数 (C)

3

我看到了很多不同的回答,也查看了其中许多,但是我找不到我的问题的答案。

我遇到的错误是:

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

(newArr << i) ^= 1;

有什么想法吗? 谢谢。

3
你的意思是newArr = (newArr << i) ^ 1吗?如果你能澄清你想要什么,你很可能会解决自己的问题。 - CB Bailey
请回答一下,这样我就可以打勾了 :) - user2991251
2个回答

4
您正在尝试将操作的结果分配给另一个结果。请尝试以下正确的方法:
newArr = (newArr << i) ^ 1;

这个想法是,你必须有一个有效的Ivvalue,而"<< "的临时结果不是有效的。 你需要像newArr这样的变量。下面的SO答案解释了与此情况相关的许多术语:

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

希望我的回答为问题提供了一些启示!

0
"

\"<<\"就像\"+\"或\"-\"一样,是一个二元运算符。 它需要被赋值给一个变量。 例如,你不能只写这个 a+b; 正确的方式是 c = a+b;

"

1
你不需要进行赋值操作。你可以直接写成 a+b - leemes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接