>  기사  >  백엔드 개발  >  C의 Switch 문 내에서 루프를 종료하는 방법: `goto` 또는 플래그를 사용합니까?

C의 Switch 문 내에서 루프를 종료하는 방법: `goto` 또는 플래그를 사용합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-27 02:41:30691검색

How to Exit a Loop from Within a Switch Statement in C  : Using `goto` or a Flag?

스위치 내에서 루프를 종료하는 대체 접근 방식

특정 시나리오에서는 내부에서 둘러싸는 루프를 종료해야 할 수도 있습니다. 스위치 문. 플래그를 사용하는 것이 일반적인 접근 방식이지만 C에서는 goto 문을 사용하는 대체 솔루션을 제공합니다.

딜레마:

다음 코드 조각을 고려하세요.

<code class="cpp">while(true) {
    switch(msg->state) {
    case MSGTYPE: // ...
        break;
    // ... more stuff ...
    case DONE:
        // **HERE, I want to break out of the loop itself**
    }
}</code>

목표는 msg->state가 DONE과 같을 때 즉시 루프를 종료하는 것입니다.

goto 사용:

C에서는 다음을 사용할 수 있습니다. 코드의 특정 위치로 명시적으로 점프하려면 goto 문을 사용하세요. 이를 활용하여 원하는 동작을 달성할 수 있습니다.

<code class="cpp">while ( ... ) {
    switch( ... ) {
     case ...:
         goto exit_loop;  // Jump to this location when msg->state is DONE

   }
}

exit_loop: ;  // Label for jump target</code>

이 수정된 코드에서 msg->state가 DONE과 같을 때 goto 문은 실행 흐름을exit_loop 레이블로 지정합니다. 결과적으로 스위치와 둘러싼 루프가 모두 종료됩니다.

참고: goto 문의 대상을 식별하려면 레이블(:)을 사용하는 것이 중요합니다. goto를 무분별하게 사용하면 스파게티 코드 및 유지 관리 문제가 발생할 수 있습니다.

위 내용은 C의 Switch 문 내에서 루프를 종료하는 방법: `goto` 또는 플래그를 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.