这是什么样的'for'循环?

时间:2013-05-11 15:35:28

标签: for-loop arduino arduino-ide

我的朋友给了我这个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循环是什么意思?

换句话说,它是什么样的循环,它是如何工作的?

2 个答案:

答案 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)有效,但对比较结果无效。

很可能代码是错误的。一个假设是==应该是=