if문 내의 while(true) 질문입니다.

조회수 1273회
  if (!myDFPlayer.begin(mySoftwareSerial)) {
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true);
  }

아두이노 에서 사용되는 모듈의 샘플코드인데 while(true){...} 형식은 봤어도 저렇게 하나만 딱 쓰이는건 본기억이 없어서그런데 ㅠㅠ 어떻게 쓰이는건지 알려주실수있으신가요!

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • while (true);
    

    위 코드는 아래와 동일한 의미를 갖습니다.

    while (true) {
    }
    

    비슷한 방법으로 if 문도 가능합니다.

    if (true);
    

    하나만 더 여쭤봐도될까요? 그럼 저 코드에서 while안에 아무것도 없는데 저걸 쓴 이유가 있나요?

    해당 코드는 무한 루프가 되므로 더이상 코드가 진행되지 않습니다.

    일반적인 경우 무한 루프에 빠질 경우 CPU 를 사용하기 때문에 다른 프로그램에 성능상 영향을 줍니다. 하지만 임베디드 같이 단일 프로그램만 돌아가는 상황에서는 프로그램을 정지시키기 위한 용도로 무한루프를 사용합니다.

    질문 주신 경우는 시리얼 통신 시작에 실패해서 다음 코드로 넘어가도 정상 동작을 하지 않으니, 사용자에게 문제를 알리고 프로그램을 정지시키기 위한 용도로 보입니다.

    • 하나만 더 여쭤봐도될까요? 그럼 저 코드에서 while안에 아무것도 없는데 저걸 쓴 이유가 있나요? 알 수 없는 사용자 2018.6.1 22:17
    • 답변 수정하였습니다. 유동욱 2018.6.1 22:39
    • 아!! if문 다음으로 코드가 진행되지않도록 정지를 걸어주는것이군요!! 감사합니다 명확히 이해되었습니다 :) 알 수 없는 사용자 2018.6.1 23:46

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)