0

我的朋友给了我这个 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(;;){}

等等,但我从未见过像我从朋友那里得到的代码这样的东西。

for它确实在 Arduino IDE 上编译,那么这个特定循环的含义是什么?

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

4

2 回答 2

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
于 2013-05-11T15:37:30.453 回答
2

首先,让我们从字面上理解这一点。转换为 while 循环为:

button; // does nothing
while(button == HIGH) { // clear
    // do stuff
    button == digitalRead(12); // same as digitalRead(12);
}

这段代码确实应该引起很多 IDE 或编译器警告。无论如何,我的回答是正确的,这就是它的字面意思。请注意,这button == digitalRead(12)是有效的,但对比较结果没有任何作用。

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

于 2013-05-11T15:37:36.410 回答