Considere la siguiente switch
declaració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.
goto
no es malo. Los seguidores del culto de carga son! No se puede imaginar hasta qué extremo puede ir la gente para evitarlo goto
porque es tan malvado, lo que hace que su código sea un verdadero lío ilegible.
goto
principalmente para simular algo así como una finally
cláusula en funciones, donde los recursos (archivos, memoria) deben liberarse al detenerse, y repetir para cada caso de error una lista de free
y close
no ayuda para la legibilidad. Sin embargo, hay un uso de goto
eso que me gustaría evitar pero que no puedo, es cuando quiero salir de un bucle y estoy dentro switch
de ese bucle.