3

我看到了这个问题的许多不同答案,并查看了其中许多,但我找不到我的问题的答案。

我得到的错误是

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

(newArr << i) ^= 1;

有任何想法吗?谢谢

4

2 回答 2

4

您正在尝试将另一个结果分配给操作的结果。尝试以下正确的方法来做到这一点:

newArr = (newArr << i) ^ 1;

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

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

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

于 2013-11-14T09:01:38.390 回答
0

“<<”是一个二元运算符,就像“+”或“-”一样。它需要分配给一个变量。例如。你不能只写这个 a+b;正确的方法是 c = a+b;

于 2013-11-14T09:10:01.873 回答