Estructura Switch
Estructura Switch
Estructura Switch
La estructura de selección switch en el lenguaje C se utiliza para evaluar una expresión o variable y
ejecutar diferentes bloques de código según el valor de esa expresión.
Estructura básica:
switch (expresion) {
case valor1:
break;
case valor2:
break;
// ...
default:
break;
default: Es una etiqueta opcional que se ejecuta si ninguno de los casos anteriores coincide.
¿Cómo funciona?
Se evalúa la expresion.
El valor de la expresion se compara con cada case en el switch.
Si se encuentra una coincidencia, se ejecuta el bloque de código correspondiente y se sale
del switch (a menos que no haya un break).
Si no hay coincidencias y hay un bloque default, se ejecuta el código dentro del default.
Si no hay coincidencias y no hay un default, no se ejecuta ningún bloque.
La estructura switch es útil cuando se quiere comparar una variable o expresión con múltiples
valores. Es una alternativa más legible y eficiente en términos de rendimiento que encadenar
múltiples if-else if-else.
¿Cuándo lo utilizo?
EJEMPLO:
int opcion = 2;
switch (opcion) {
case 1:
printf("Opción 1 seleccionada\n");
break;
case 2:
printf("Opción 2 seleccionada\n");
break;
case 3:
printf("Opción 3 seleccionada\n");
break;
default:
printf("Opción no reconocida\n");
break;
DATOS RELEVANTES
Sin break: Una de las características únicas del switch en C es que si olvidas poner un break
después de un case y la expresión coincide con ese case, entonces se ejecutará ese case y
todos los case siguientes hasta que encuentre un break o termine el switch. A esto se le
llama "fall-through".
int valor = 2;
switch (valor) {
case 1:
printf("Uno\n");
case 2:
printf("Dos\n");
case 3:
printf("Tres\n");
default:
printf("Final\n");
}
// Salida:
// Dos
// Tres
// Final
Constantes: Los case en un switch en C solo pueden ser constantes enteras (como int o char).
No se pueden usar expresiones o variables.
switch con char: Además de usar números enteros en un switch, también puedes usar
caracteres (char).
switch vs if-else: En términos de rendimiento, no hay una diferencia significativa entre usar
un switch y encadenar múltiples if-else. Sin embargo, en ciertas situaciones, el compilador
puede generar código más eficiente con un switch.
Caso case vacío: En algunas situaciones, puede ser útil tener un case vacío. Esto se usa para
agrupar varios case juntos sin ejecutar ningún código.
int valor = 2;
switch (valor) {
case 1:
case 2:
case 3:
printf("Uno, Dos o Tres\n");
break;
default:
printf("Otro valor\n");
break;
}
// Salida: Uno, Dos o Tres