Definir enums
Cree valores con nombres legibles
Definir enums es una lección gratuita de C Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C Academy incluye 4 lecciones en total.
¿Qué es un enum?
Una enumeración (enum) es un tipo definido por el usuario que agrupa un conjunto de constantes enteras con nombre.
En lugar de recordar que 0 significa lunes y 1 significa martes, puede asignar nombres legibles a esos números. Esto hace que el código sea más claro y menos propenso a errores.
Sintaxis básica
Se declara un enum con la palabra clave enum, un nombre de etiqueta y una lista de nombres entre llaves.
Cada nombre se convierte en una constante que puede utilizarse en cualquier lugar donde se espere un entero.
enum Weekday { MON, TUE, WED, THU, FRI };Los valores predeterminados comienzan en 0
De forma predeterminada, el primer nombre es 0 y cada nombre siguiente es uno mayor que el anterior.
Por tanto, en enum Weekday, MON es 0, TUE es 1, WED es 2, y así sucesivamente.
#include <stdio.h>
enum Weekday { MON, TUE, WED, THU, FRI };
int main(void) {
printf("%d %d %d\n", MON, TUE, WED);
return 0;
}Declarar una variable enum
Una vez que existe un tipo enum, puede crear variables de ese tipo.
La variable contiene uno de los valores con nombre. Internamente, no es más que un int.
#include <stdio.h>
enum Weekday { MON, TUE, WED, THU, FRI };
int main(void) {
enum Weekday today = WED;
printf("today = %d\n", today);
return 0;
}Por qué los enum mejoran la legibilidad
Compare if (state == 2) con if (state == PAUSED).
La segunda opción se explica por sí sola. Los enum permiten que el compilador controle el significado mientras usted lee valores claros con nombre en lugar de números misteriosos.
enum Status { RUNNING, PAUSED, STOPPED };Usar enum con switch
Los enum combinan de forma natural con las sentencias switch. Cada valor con nombre se convierte en una etiqueta de caso clara.
Este es uno de los usos más comunes de los enum en situaciones reales.
#include <stdio.h>
enum Status { RUNNING, PAUSED, STOPPED };
int main(void) {
enum Status s = PAUSED;
switch (s) {
case RUNNING: printf("running\n"); break;
case PAUSED: printf("paused\n"); break;
case STOPPED: printf("stopped\n"); break;
}
return 0;
}Los enum son solo enteros
Las constantes enum son intercambiables con los enteros. Puede realizar operaciones aritméticas y comparaciones con ellas.
Esta flexibilidad resulta útil, pero también significa que C no impedirá almacenar un número fuera del rango.
#include <stdio.h>
enum Level { LOW, MID, HIGH };
int main(void) {
enum Level next = LOW + 1;
printf("%d\n", next);
return 0;
}Enum anónimos
Puede omitir el nombre de la etiqueta si solo necesita las constantes y no un tipo con nombre.
Es una forma rápida de definir un grupo de constantes enteras relacionadas.
#include <stdio.h>
enum { RED, GREEN, BLUE };
int main(void) {
printf("%d %d %d\n", RED, GREEN, BLUE);
return 0;
}Convenciones de nomenclatura
Por convención, los nombres de las constantes enum se escriben en MAYÚSCULAS_CON_GUION_BAJO, como las macros.
Esto indica a los lectores que el valor es una constante fija. El nombre de la etiqueta suele utilizar CamelCase o PascalCase.
enum TrafficLight { LIGHT_RED, LIGHT_YELLOW, LIGHT_GREEN };Combinar con typedef
Escribir enum Weekday en todas partes resulta verboso. Un typedef permite utilizar un nombre corto.
Después del typedef, puede declarar variables como Weekday today; sin la palabra clave enum.
#include <stdio.h>
typedef enum { MON, TUE, WED } Weekday;
int main(void) {
Weekday d = TUE;
printf("%d\n", d);
return 0;
}Ámbito de las constantes enum
Los nombres de las constantes enum comparten el mismo espacio de nombres que los identificadores ordinarios dentro de su ámbito.
Esto significa que dos enum del mismo ámbito no pueden reutilizar el mismo nombre de constante. Elija nombres distintos para evitar conflictos.
enum A { OPEN, CLOSED };
enum B { LOCKED, UNLOCKED };Comprobación rápida
Compruebe su comprensión de los valores predeterminados de los enum.
Resumen
Un enum define constantes enteras con nombre. La primera es 0 y cada nombre siguiente es uno mayor, a menos que se indique lo contrario.
Los enum hacen que el código sea legible, combinan bien con switch y se pueden abreviar mediante typedef. A continuación, exploraremos los valores y rangos personalizados.
Preguntas frecuentes
¿La lección «Definir enums» es gratis?
Sí — el texto completo de «Definir enums» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C Academy, actualiza a CoddyKit PRO. El curso de C Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Definir enums»?
Cree valores con nombres legibles Practicas C Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C Academy?
No se requiere experiencia previa. C Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Definir enums»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C Academy?
Sí. Cada lección de C Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.