我看到了这个问题的许多不同答案,并查看了其中许多,但我找不到我的问题的答案。
我得到的错误是
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?
希望我能对这个问题有所了解!
“<<”是一个二元运算符,就像“+”或“-”一样。它需要分配给一个变量。例如。你不能只写这个 a+b;正确的方法是 c = a+b;