Dominando enums en C: Definición, declaración y operaciones de banderas
Enums en C
Explore cómo definir, declarar y aprovechar enums en C—completo con ejemplos prácticos, técnicas de banderas e información de tamaño.
En C, una enumeración (enum) es un tipo que agrupa un conjunto de constantes enteras nombradas, ofreciendo intención más clara y seguridad de tipos en tiempo de compilación.
enum bandera {const1, const2, ..., constN};
Por defecto, const1 es igual a 0, const2 es igual a 1, y así sucesivamente. Puede sobrescribir estos valores en la declaración si es necesario.
// Personalizando constantes de enum
enum suit { club = 0, diamonds = 10, hearts = 20, spades = 3, };
Declaración de tipo enumerado
Definir un enum crea un nuevo tipo que puede usarse para variables. Así es como declarar e instanciar uno.
enum boolean {false, true};
enum boolean check; // declaración de variable
La variable check ahora es de tipo enum boolean. Sus valores se mapean a false = 0 y true = 1.
enum boolean {false, true} check;
Ejemplo: Enumeración de días de la semana
#include <stdio.h>
enum week {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
int main() {
enum week today = Wednesday;
printf("Día %d", today + 1);
return 0;
}
Salida
Día 4
¿Por qué usar enums?
Las variables enum contienen un único valor nombrado, haciendo el código auto-documentado. También ocupan el mismo almacenamiento que un int por defecto, típicamente 4 bytes en la mayoría de plataformas.
#include <stdio.h>
enum suit {club = 0, diamonds = 10, hearts = 20, spades = 3} card;
int main() {
card = club;
printf("Tamaño de variable enum = %d bytes", sizeof(card));
return 0;
}
Salida
Tamaño de variable enum = 4 bytes
Este tamaño es consistente con el tipo int subyacente, aunque el tamaño exacto puede variar por compilador y arquitectura.
Uso de enums para banderas
Los enums sobresalen representando banderas cuando cada constante es una potencia distinta de dos. Esto permite combinar banderas con OR bit a bit y probarlas con AND bit a bit.
#include <stdio.h>
enum designFlags {ITALICS = 1, BOLD = 2, UNDERLINE = 4} button;
Porque los valores son potencias de dos:
// Representación binaria ITALICS = 00000001 BOLD = 00000010 UNDERLINE = 00000100
Puede combinarlos:
#include <stdio.h>
enum designFlags {BOLD = 1, ITALICS = 2, UNDERLINE = 4};
int main() {
int myDesign = BOLD | UNDERLINE; // 00000001 | 00000100 = 00000101
printf("%d", myDesign);
return 0;
}
Salida
5
Una salida de 5 indica que tanto BOLD como UNDERLINE están activos.
Para verificar una bandera específica:
if (myDesign & ITALICS) {
// manejar itálicas
}
Aunque puede lograr muchos resultados sin enums, estos proporcionan una forma robusta y type-safe de manejar constantes relacionadas—especialmente para operaciones de banderas.
Lenguaje C
- C# Hola Mundo – Construyendo su primera aplicación en C#
- Entendiendo palabras clave e identificadores en C#: Reglas, listas y mejores prácticas
- Domine variables y tipos de datos primitivos en C#: Guía completa
- Operadores en C# – Guía completa de operadores en C#
- Dominando operadores bit a bit y de desplazamiento en C#: Guía completa
- Fundamentos de C#: Entrada y salida esenciales
- Expresiones, sentencias y bloques en C#: Guía completa con ejemplos prácticos
- Dominando los comentarios en C#: Tipos, mejores prácticas y documentación XML
- Dominando la sentencia switch en C#: Sintaxis, ejemplos y mejores prácticas
- Operador ternario en C#: Guía concisa para expresiones condicionales
- Sentencia break en C#: Cómo y cuándo usarla