1. Introducción
La sentencia switch
, ampliamente utilizada en programación, es una herramienta muy práctica para expresar condiciones de forma concisa. En C, se emplea para organizar múltiples opciones, lo que mejora la legibilidad del código y reduce errores. En este artículo explicaremos el uso básico y avanzado de la sentencia switch
en C, con ejemplos de código reales.
2. ¿Qué es la sentencia switch en C?
La sentencia switch
compara una variable con múltiples valores y ejecuta el bloque de código correspondiente. Es especialmente útil cuando las condiciones se definen con números o tipos enumerados (enum
). Por ejemplo, se puede escribir un programa que ejecute acciones según el número de un menú seleccionado por el usuario.
switch (condición) {
case valor1:
// Procesamiento para valor1
break;
case valor2:
// Procesamiento para valor2
break;
default:
// Procesamiento si no coincide con ningún valor
}
En esta estructura, el valor de la expresión indicada en switch
determina qué bloque case
se ejecutará. Si no hay coincidencias, se ejecuta default
, lo que permite manejar errores para valores inesperados.

3. Sintaxis básica de switch
A continuación, un ejemplo sencillo. El programa muestra un mensaje dependiendo del valor obtenido en un dado.
int main(void) {
int dice = 3;
switch (dice) {
case 1:
printf("Ha salido el 1.");
break;
case 2:
printf("Ha salido el 2.");
break;
case 3:
printf("Ha salido el 3.");
break;
case 4:
printf("Ha salido el 4.");
break;
case 5:
printf("Ha salido el 5.");
break;
case 6:
printf("Ha salido el 6.");
break;
default:
printf("Valor inválido.");
break;
}
return 0;
}
En este ejemplo, si dice
es 3, el programa muestra “Ha salido el 3.”. Si se introduce un valor inválido, el bloque default
muestra “Valor inválido.”, garantizando un manejo de errores adecuado.

4. Ejemplo de uso de switch: selección de menú
La sentencia switch
es muy útil cuando se realizan distintas acciones en función de la entrada del usuario. En este caso, un menú de opciones:
int main(void) {
int choice;
printf("Menú:");
printf("1. Hamburguesa");
printf("2. Pizza");
printf("3. Pasta");
printf("Seleccione un número: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Has elegido Hamburguesa.");
break;
case 2:
printf("Has elegido Pizza.");
break;
case 3:
printf("Has elegido Pasta.");
break;
default:
printf("Selección inválida.");
break;
}
return 0;
}
El programa muestra un mensaje diferente según la opción elegida. Gracias al switch
, el código se mantiene claro y fácil de mantener.

5. Diferencias entre switch e if: ¿cuál usar?
Tanto switch
como if
permiten realizar bifurcaciones condicionales, pero se recomienda usarlos en situaciones distintas:
Cuándo usar switch:
- Cuando se comparan valores fijos y la bifurcación depende de esos valores (ej.: selección de menú, códigos de estado).
- Cuando las condiciones son simples y directas.
Cuándo usar if:
- Cuando las condiciones son más complejas (ej.: rangos, operadores lógicos).
- Cuando se necesitan evaluar expresiones booleanas o múltiples variables.
En resumen: switch
es ideal para bifurcaciones simples basadas en valores específicos, mientras que if
es más flexible para condiciones complejas.
6. Errores comunes y cómo evitarlos
Veamos los errores más frecuentes al usar switch
y cómo prevenirlos:
1. Omitir la instrucción break (fallthrough)
Si se olvida el break
, no solo se ejecuta el bloque correspondiente sino también los siguientes. A esto se le llama fallthrough. Excepto en los casos donde se use de forma intencional, se debe colocar siempre break
al final de cada case
.
2. No incluir un bloque default
Es recomendable usar default
para manejar entradas no previstas y reducir el riesgo de comportamientos inesperados.

7. Uso avanzado: switch con enum
Una manera poderosa de usar switch
es junto con enum
(tipos enumerados). Esto permite trabajar con nombres significativos en lugar de números, mejorando la legibilidad del código.
enum Fruit { APPLE, BANANA, ORANGE };
int main(void) {
enum Fruit fruit = BANANA;
switch (fruit) {
case APPLE:
printf("Has elegido Manzana.");
break;
case BANANA:
printf("Has elegido Plátano.");
break;
case ORANGE:
printf("Has elegido Naranja.");
break;
default:
printf("Selección inválida.");
break;
}
return 0;
}
En este ejemplo, se define un enum
para las frutas y el switch
bifurca según la opción seleccionada. Gracias a los enumerados, el código se vuelve más claro y fácil de mantener.
8. Conclusión
La sentencia switch
en C resulta muy eficaz cuando las condiciones dependen de valores específicos. Comparada con if
, simplifica bifurcaciones basadas en valores concretos, manteniendo la legibilidad y eficiencia del código. Incorpora switch
en tus programas para lograr un código más claro y profesional.