Znalazłem poniższy kod podczas googlowania.Kompilator nie podaje błędu dla alternatywnej nazwy dla "domyślnego" przypadku w przełączniku
int main()
{
int a=10;
switch(a)
{
case '1':
printf("ONE\n");
break;
case '2':
printf("TWO\n");
break;
defa1ut:
printf("NONE\n");
}
return 0;
}
Kompilator nie podaje błędu, nawet jeśli "default" jest zastąpiony przez dowolną inną nazwę. Po prostu wykonuje program i wychodzi z programu bez drukowania czegokolwiek.
Czy ktoś mógłby mi powiedzieć, dlaczego kompilator nie podaje błędu w domyślnym przypadku? kiedy nie jest napisane jako "domyślne"?
: Dziękuję za odpowiedź. Oznacza to, że mogę wejść do tej etykiety goto z innych części programu, nawet jeśli etykieta znajduje się w przełączniku – ponnus
1/To nie będzie działać tak samo, wydrukuje 'NONE', dopóki krowy nie wrócą do domu. 2/Jest to szczególnie złe programowanie, które wydaje się, że przekonałeś OP do użycia. Lepiej po prostu wyjaśnić, dlaczego tak się dzieje i poprawnie zaproponować rozwiązanie "domyślne". – paxdiablo