Considere a seguinte switchdeclaração:
switch( value )
{
case 1:
return 1;
default:
value++;
// fall-through
case 2:
return value * 2;
}
Esse código é compilado, mas é válido (= comportamento definido) para C90 / C99? Nunca vi código em que o caso padrão não seja o último.
Edição:
Como Jon Cage e KillianDS escrevem: este é um código realmente feio e confuso e eu estou ciente disso. Estou interessado apenas na sintaxe geral (está definida?) E na saída esperada.
gotonão é mau. Seguidores de culto de carga são! Você não pode imaginar até que ponto as pessoas extremos podem evitar, gotoporque é supostamente tão ruim, criando uma verdadeira bagunça ilegível de seu código.
gotoprincipalmente para simular algo como uma finallycláusula em funções, em que recursos (arquivos, memória) precisam ser liberados ao parar e repetir para cada caso de erro uma lista freee closenão ajuda na legibilidade. Há um uso gotoque eu gostaria de evitar, mas não posso, é quando eu quero sair de um loop e estou dentro de um switchloop.