Rozważ następujące switchstwierdzenie:
switch( value )
{
case 1:
return 1;
default:
value++;
// fall-through
case 2:
return value * 2;
}
Ten kod jest kompilowany, ale czy jest prawidłowy (= zdefiniowane zachowanie) dla C90 / C99? Nigdy nie widziałem kodu, w którym domyślny przypadek nie jest ostatnim przypadkiem.
EDYCJA:
Jak piszą Jon Cage i KillianDS : to jest naprawdę brzydki i zagmatwany kod i jestem tego świadomy. Interesuje mnie tylko ogólna składnia (czy jest zdefiniowana?) I oczekiwane dane wyjściowe.
gotonie jest zły. Wyznawcy kultu Cargo są! Nie możesz sobie wyobrazić, do jakich skrajności ludzie mogą się posunąć, gotoponieważ jest to z całą pewnością tak złe, co powoduje prawdziwy nieczytelny bałagan w ich kodzie.
gotogłównie do symulacji czegoś w rodzaju finallyklauzuli w funkcjach, gdzie zasoby (pliki, pamięć) muszą być zwolnione podczas zatrzymywania, a powtarzanie dla każdego przypadku błędu listy freei closenie pomaga w czytelności. Jest jednak jedno użyciegoto , którego chciałbym uniknąć, ale nie mogę, polega na tym, że chcę wyrwać się z pętli i jestem switchw tej pętli.