IT

스위치 문에서 "defau4t"가 합법적인 이유는 무엇입니까?

itgroup 2023. 9. 10. 12:09
반응형

스위치 문에서 "defau4t"가 합법적인 이유는 무엇입니까?

다른 사이트에서 이 프로그램을 생각해보고 해볼까 생각했는데, 여기 프로그램이 있습니다.

#include <stdio.h>
int main()
{
    int a=10;
    switch(a)
    {
         case '1': printf("one");
                   break;
         case '2': printf("two");
                   break;
         defau4t:  printf("none");
    }
    return 0;
}

놀랍게도, 이것은 오류나 경고 없이 컴파일됩니다.이것이 어떻게 가능한 걸까요?키워드 "default"에 오류가 있지 않습니까?
누가 이 행동을 설명해 줄 수 있습니까?

토큰은 키워드가 아닌 것으로 간주됩니다.이거는.goto"defau4t"라는 이름의 점프 마크는 데드 코드를 가리키고 있습니다(이후).break;case '2':)...

웃음을 위해 이것을 시도해 보세요 (그리고 끝없는 루프):

switch(a)
{
     case '1': printf("one");
               break;
     case '2': printf("two");
               break;
     defau4t: printf("none");
     default: goto defau4t;
}

한가지 결점은switch당신이 그들을 마구 뛰어다닐 수 있다는 것을 진술합니다.goto. 내부의 어느 지점에서든switch(또는 이 문제와 관련하여 외부에) 레이블을 배치할 수 있습니다.goto. 물론 그것은 스파게티 코드로 이어지기 때문에 매우 나쁜 관행입니다.

그렇게defau4t:라벨은 단지 라벨일 뿐이며, 라벨은 기능체 내부의 거의 모든 곳에 배치될 수 있습니다.

그런 기본 유형을 제외하고는 말입니다.

업데이트도 필요할 것 같습니다.

     case '1': printf("one");
               break;
     case '2': printf("two");
               break;

로.

     case 1: printf("one");
               break;
     case 2: printf("two");
               break;

언급URL : https://stackoverflow.com/questions/25868430/why-is-defau4t-legal-in-a-switch-statement

반응형