Tipos de enumeración en lenguaje C, los conocerá si los conoce
En la programación real, los valores de algunos datos suelen ser limitados y solo pueden ser un número muy pequeño de números enteros. Es mejor asignar un nombre a cada valor para facilitar su uso en el código posterior. , solo hay siete días en una semana, solo hay doce meses en un año, hay seis cursos en una clase por semana, etc.
Tomando como ejemplo siete días de la semana, podemos utilizar el comando #define para asignar un nombre a cada día:
Aunque el comando #define puede solucionar el problema, también trae muchos problemas. Los efectos secundarios resultan en demasiados nombres de macros y código suelto, lo que siempre parece un poco incómodo. El lenguaje C proporciona un tipo de enumeración (Enum) que puede enumerar todos los valores posibles y darles un nombre.
enum es una nueva palabra clave utilizada específicamente para definir tipos de enumeración, que es su único uso en lenguaje C; typeName es el nombre del tipo de enumeración valueName1, valueName2, valueName3, .. .... una lista de nombres correspondientes a cada valor. Presta atención a lo último; no puede faltar.
Por ejemplo, enumere los días de una semana:
Como puede ver, solo dimos el nombre, pero no el valor correspondiente al nombre. Esto se debe al valor de enumeración. Por defecto, comienza desde 0 y suma 1 (incrementando) uno por uno, es decir, los valores correspondientes de lunes, martes... domingo en la semana son 0, 1... 6 respectivamente;
También podemos asignar un valor a cada nombre:
Una forma más sencilla es asignar solo un valor al nombre:
De esta manera el valor aumenta comenzando desde 1, que es equivalente al método de escritura anterior.
Una enumeración es un tipo a través del cual se pueden definir variables de enumeración:
También puedes definir variables mientras defines el tipo de enumeración:
Con esto Para enumerar un variable, puede asignarle el valor en la lista:
O:
Los nombres lunes, martes y miércoles se reemplazan con los números correspondientes. Esto significa que lunes, martes, miércoles, etc. no son variables y no ocupan memoria en el área de datos (área constante, área de datos globales, área de pila y área de montón), sino que se compilan directamente en el comando y se colocan. el área de código. Por lo tanto, no puede usar & para obtener sus direcciones. Ésta es la naturaleza de las enumeraciones.
La variable de tipo de enumeración necesita almacenar un número entero, cuya longitud es la misma que int.