我的朋友给了我这个Arduino代码:
int button;
void setup(){
pinMode(12, INPUT);
}
void loop(){
for(button; button == HIGH; button == digitalRead(12)) { //This line
//Do something here
}
}
该行注释了"此行"我不清楚。
我总是看到for
循环,如:
for (init; condition; increment)
也以不同的方式使用,例如:
for(int i=0; i<n; i++){}
for(;;){}
等等,但我从未见过像我从朋友那里得到的代码。
它在Arduino IDE上编译,那么这个特定的for
循环是什么意思?
换句话说,它是什么样的循环,它是如何工作的?
答案 0 :(得分:3)
这个循环:
for(button; button == HIGH; button == digitalRead(12))
相当于:
button; // does nothing - should probably be `button = HIGH;` ?
while (button == HIGH) // break out of loop when button != HIGH
{
//do something here
button == digitalRead(12); // comparison - should probably be assignment ?
}
注意:我怀疑整个循环是错误的,应该阅读:
for (button = HIGH; button == HIGH; button = digitalRead(12))
// do something here
答案 1 :(得分:2)
首先,让我们从字面上解释一下。转换为while循环:
button; // does nothing
while(button == HIGH) { // clear
// do stuff
button == digitalRead(12); // same as digitalRead(12);
}
此代码确实应该引发很多IDE或编译器警告。无论如何,我的回答是正确的,这就是它真正转化为的东西。请注意,button == digitalRead(12)
有效,但对比较结果无效。
很可能代码是错误的。一个假设是==
应该是=
。