当我尝试编译代码时出现此错误:
左值作为赋值的左操作数。
代码通过模拟端口读取按钮。这是错误的地方(在void(循环)中):
while (count < 5){
buttonPushed(analogPin) = tmp;
for (j = 0; j < 5; j++) {
while (tmp == 0) { tmp = buttonPushed(analogPin); } //something wrong with the first half of this line!
if(sequence[j] == tmp){
count ++;
}
else {
lcd.setCursor(0, 1); lcd.print("Wrong! Next round:"); delay(1000);
goto breakLoops;
}
}
}
breakLoops:
elapsedTime = millis() - startTime;
在最顶端,我有:int tmp;
答案 0 :(得分:2)
buttonPushed(analogPin) = tmp;
此行不起作用。 buttonPushed
是一个功能,只能从analogPin
读取;你不能在C中分配一个函数的结果。我不确定你要做什么,但我认为你可能想要使用另一个变量。
答案 1 :(得分:2)
你有这一行:
buttonPushed(analogPin) = tmp;
您可能需要:
tmp = buttonPushed(analogPin);
使用赋值运算符,=
运算符左侧的对象获取=
运算符右侧的值,而不是相反的值。
答案 2 :(得分:0)
这里的问题是你试图分配一个临时/右值。 C中的赋值需要左值。我猜你的buttonPushed
函数的签名基本上是以下
int buttonPushed(int pin);
这里buttonPushed
函数返回找到的按钮的副本,该按钮没有意义分配给。为了返回实际按钮与副本,您需要使用指针。
int* buttonPushed(int pin);
现在,您可以将作业代码设为以下内容
int* pTemp = buttonPushed(analogPin);
*pTemp = tmp;
这里的任务分配到一个左值的位置,并且是合法的