2013-05-11 2 views
0

내 친구가 나에게이 아두 이노 코드를했다.'for'루프는 어떤 종류입니까?</p> <pre><code>int button; void setup(){ pinMode(12, INPUT); } void loop(){ for(button; button == HIGH; button == digitalRead(12)) { //This line //Do something here } } </code></pre> <p>라인은 "이 라인은"나에게 불분명와 주석 :

난 항상 본 적이 유사한 for 루프 : 나는 코드 같은 것을 본 적이 등등

for(int i=0; i<n; i++){} 
for(;;){} 

그리고 있지만 :

for (init; condition; increment) 
같은 또 다른 방법으로 사용

, 나는 내 친구에게서 얻었습니다.

Arduino IDE에서 컴파일되므로이 특정 for 루프의 의미는 무엇입니까?

즉, 어떤 종류의 루프이며 어떻게 작동합니까?

+0

가 증가하지 않아도, 구문이 더'(run_once_at_start, conditions_to_check_every_loop, actions_to_perform_every_loop)에 대한처럼'또한 , 그것은 깨진 코드 =='부작용이없고 아무것도 수행되지 않습니다'의 있습니다. 나는 당신의 친구가'=' – GRAYgoose124

+0

을 의미한다고 생각합니다. @ GRAYgoose124 나는 그가 컴파일하고 제대로 실행될 때'=='를 의미한다고 생각합니다. – BackSlash

+0

물론, 컴파일되고 올바르게 실행되기 때문에 많은 논리적 오류가 발생합니다. 그래도 아무 것도하지 않겠지 만, 12 번 핀의 digitalRead 값을 버튼과 비교하고 아무 것도하지 않는 것입니다. 'button == digitalRead (12)'는 완전히 생략 될 수 있으며 같은 결과를 낳습니다. 사실, 컴파일러가 어쨌든 그것을 최적화했다. – GRAYgoose124

답변

3

이 루프 :

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; button == HIGH; button == digitalRead(12)) 

가 동등 나는 전체 루프 버그가 의심 아마도 읽어야

for (button = HIGH; button == HIGH; button = digitalRead(12)) 
    // do something here 
+0

"아마"아무것도하지 않습니까? 언제 그것이 무엇인가? – djechlin

+0

죄송합니다 - 버튼이 매크로 또는 무언가일지도 모른다고 생각했지만 이제는 int 버튼으로 선언되었으므로 아무 것도하지 않습니다. –

+0

'digitalRead()'는 부작용이 있거나 없을 수 있습니다. 아마 그럴거야. 그것은 * 가능성있는 * 여기, IMHO – wildplasser

2

을 첫째,의 해석하자 이 말 그대로. 루프를하는 중에 변환과 같은 :

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

이 코드 정말가 IDE 또는 컴파일러 경고를 많이 출발해야한다. 어쨌든 제 답변은 정확합니다, 그것이 문자 그대로 변환됩니다. button == digitalRead(12)은 유효하지만 비교 결과에는 아무런 영향을 미치지 않습니다.

대부분 코드가 버그 일 가능성이 큽니다. 한 가설은 ===이어야합니다. 루프에 대한