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(;;){}

などなどですが、友人からもらったコードのようなものは見たことがありません。

これは Arduino IDE でコンパイルされますが、この特定のforループの意味は何ですか?

つまり、どのようなループで、どのように機能するのでしょうか?

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)は有効ですが、比較の結果に対して何もしないことに注意してください。

ほとんどの場合、コードにバグがあります。1 つの仮説は、である==べきです=

于 2013-05-11T15:37:36.410 に答える