1. Introducción
En el lenguaje C, enum
(tipo enumerado) es una herramienta fundamental para mejorar la legibilidad y el mantenimiento del código. En este artículo explicaremos en detalle cómo usar enum
, desde lo más básico hasta aplicaciones prácticas. Tanto principiantes como programadores intermedios podrán dominar su uso y escribir código más eficiente en C.
2. ¿Qué es enum
?
Definición y función de enum
enum
, conocido como «tipo enumerado», es un tipo de dato diseñado para definir un conjunto de constantes. Generalmente se usa para asignar nombres identificables a varios valores relacionados. Por ejemplo, manejar colores en un programa con números puede ser poco intuitivo. Sin embargo, con enum
se pueden definir nombres como RED
, GREEN
, BLUE
en lugar de números.
¿Por qué usar enum
?
El uso de enum
ofrece las siguientes ventajas:
- Mejor legibilidad del código: Permite usar nombres en lugar de números, facilitando la comprensión del código.
- Facilidad de mantenimiento: Si el conjunto de constantes cambia, al usar
enum
se minimiza el impacto en el resto del código. - Prevención de errores: Limita el uso de valores incorrectos al restringirse a un conjunto definido.

3. Uso básico de enum
Cómo definir un enum
La definición básica de un enum
es la siguiente:
enum { RED, GREEN, BLUE };
En este caso, RED
se asigna automáticamente a 0, GREEN
a 1 y BLUE
a 2. Para darle un nombre al enum
se usa esta sintaxis:
enum Color { RED, GREEN, BLUE };
Esto crea un enum
llamado Color
, que luego puede usarse para declarar variables.
Ejemplo de código
Ejemplo sencillo usando enum
:
#include <stdio.h>
enum Color { RED, GREEN, BLUE };
int main() {
enum Color color;
color = RED;
printf("%dn", color); // Salida: 0
return 0;
}
En este código, RED
se imprime como 0
.
4. Uso avanzado de enum
Asignación automática y manual de valores
Por defecto, los valores en enum
comienzan en 0
, 1
, 2
… de forma automática. Sin embargo, también se pueden asignar manualmente:
enum Days {
MONDAY = 1,
TUESDAY,
WEDNESDAY,
THURSDAY = 10,
FRIDAY
};
Aquí, MONDAY
vale 1, TUESDAY
vale 2, THURSDAY
se establece en 10 y FRIDAY
se asigna automáticamente como 11.
Uso de enum
en estructuras switch-case
enum
se combina frecuentemente con switch-case
para hacer el código más claro:
enum Color { RED, GREEN, BLUE };
int main() {
enum Color color = BLUE;
switch(color) {
case RED:
printf("Redn");
break;
case GREEN:
printf("Greenn");
break;
case BLUE:
printf("Bluen");
break;
default:
printf("Unknown colorn");
}
return 0;
}
Dependiendo del valor de color
, se muestra un mensaje distinto. Esto mejora la claridad del código.
Uso de enum
como índice de un array
También se puede usar enum
como índice en arreglos:
enum Color { RED, GREEN, BLUE };
char* color_names[] = { "Red", "Green", "Blue" };
printf("%sn", color_names[RED]); // Salida: Red
Aquí, se accede a un string del array usando el valor de enum
.

5. Precauciones y buenas prácticas con enum
Valores duplicados y fuera de rango
Aunque se permite duplicar valores en enum
, no es recomendable por motivos de claridad y mantenimiento.
enum Days {
MONDAY = 1,
FRIDAY = 1
};
Aquí, MONDAY
y FRIDAY
comparten el mismo valor, lo que puede causar confusión. Además, se pueden asignar valores fuera del rango, aunque no es una práctica aconsejable.
enum Days { MONDAY = 1, TUESDAY = 2 };
enum Days day = 8; // No genera error de compilación
Mejora de legibilidad mediante enum
Se recomienda usar enum
de forma activa para mejorar la legibilidad del código, ya que aclara la intención y ayuda a prevenir errores.
6. Ejemplos prácticos de enum
Comparación entre usar y no usar enum
Comparemos código con y sin enum
:
Sin enum
void findNearest(int day) {
switch(day) {
case 0:
printf("Hoyn");
break;
case 1:
printf("Hace 1 dían");
break;
// ...
}
}
Con enum
enum Days { TODAY, YESTERDAY };
void findNearest(Days day) {
switch(day) {
case TODAY:
printf("Hoyn");
break;
case YESTERDAY:
printf("Hace 1 dían");
break;
// ...
}
}
El uso de enum
aclara la intención del código y mejora su legibilidad.

7. Conclusión
enum
es una característica poderosa en C que mejora la legibilidad y mantenibilidad del código. Comprender y aplicar correctamente enum
permite escribir programas más eficientes y con menos errores. Este artículo te habrá ayudado a dominar desde lo básico hasta el uso avanzado de enum
, facilitando su aplicación en proyectos reales.