Considere la siguiente switchdeclaración:
switch( value )
{
case 1:
return 1;
default:
value++;
// fall-through
case 2:
return value * 2;
}
Este código se compila, pero ¿es válido (= comportamiento definido) para C90 / C99? Nunca he visto código donde el caso predeterminado no sea el último.
EDITAR:
como Jon Cage escriben y KillianDS : este es un código realmente feo y confuso y lo sé muy bien. Solo estoy interesado en la sintaxis general (¿está definida?) Y el resultado esperado.
gotono es malo. Los seguidores del culto de carga son! No se puede imaginar hasta qué extremo puede ir la gente para evitarlo gotoporque es tan malvado, lo que hace que su código sea un verdadero lío ilegible.
gotoprincipalmente para simular algo así como una finallycláusula en funciones, donde los recursos (archivos, memoria) deben liberarse al detenerse, y repetir para cada caso de error una lista de freey closeno ayuda para la legibilidad. Sin embargo, hay un uso de gotoeso que me gustaría evitar pero que no puedo, es cuando quiero salir de un bucle y estoy dentro switchde ese bucle.