C enum (enumeración)
La enumeración es un tipo de datos básico en C, utilizado para definir un conjunto de constantes con valores discretos; puede hacer que los datos sean más concisos y legibles.
El tipo de enumeración se utiliza normalmente para dar nombre a un grupo de constantes relacionadas en un programa, lo que facilita la legibilidad y el mantenimiento del programa.
Para definir un tipo de enumeración, se necesita utilizarenumla palabra clave, seguida del nombre del tipo de enumeración y, encerrado entre llaves{}un conjunto de constantes de enumeración. Cada constante de enumeración puede representarse con un identificador, y también se les puede asignar un valor entero. Si no se especifica, por defecto empieza desde0y se incrementa a partir de ahí.
El formato de definición de la sintaxis de enumeración es:
enum 枚举名 {枚举元素1,枚举元素2,……};
A continuación, pongamos un ejemplo: por ejemplo, una semana tiene 7 días. Si no usamos enumeración, necesitamos usar `#define` para definir un alias para cada entero:
Esto parece bastante código. Ahora echemos un vistazo a la forma de usar enumeraciones:
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
¿No parece más conciso así?
Nota:El valor predeterminado del primer miembro de la enumeración es 0 de tipo entero, y el valor de los miembros siguientes se obtiene sumando 1 al miembro anterior. En este ejemplo, definimos el valor del primer miembro como 1, el segundo como 2, y así sucesivamente.
Se puede cambiar el valor de los elementos de enumeración al definir el tipo de enumeración:
enum season {spring, summer=3, autumn, winter};Los elementos de enumeración sin valor especificado tienen como valor el del elemento anterior más 1. Es decir, el valor de `spring` es 0, el de `summer` es 3, el de `autumn` es 4 y el de `winter` es 5.
Definición de variables de enumeración
Antes solo hemos declarado el tipo de enumeración. Ahora veamos cómo definir variables de enumeración.
Podemos definir variables de enumeración de las siguientes tres formas:
1. Primero definir el tipo de enumeración y luego definir la variable de enumeración.
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
enum DAY day;
2. Definir la variable de enumeración al mismo tiempo que se define el tipo de enumeración.
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
3. Omitir el nombre de la enumeración y definir directamente la variable de enumeración.
enum
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
Ejemplo
El resultado del ejemplo anterior es:
3
En C, el tipo de enumeración se trata como tipo `int` o `unsigned int`, por lo que según el estándar de C no hay forma de recorrer el tipo de enumeración.
Sin embargo, en algunos casos especiales, si el tipo de enumeración es continuo, se puede lograr un recorrido condicional.
El siguiente ejemplo usa `for` para recorrer los elementos de la enumeración:
Ejemplo
El resultado del ejemplo anterior es:
枚举元素:1 枚举元素:2 枚举元素:3 枚举元素:4 枚举元素:5 枚举元素:6 枚举元素:7
El siguiente tipo de enumeración no es continuo; este tipo de enumeración no se puede recorrer.
enum
{
ENUM_0,
ENUM_10 = 10,
ENUM_11
};
Uso de la enumeración en `switch`:
Ejemplo
El resultado del ejemplo anterior es:
请输入你喜欢的颜色: (1. red, 2. green, 3. blue): 1 你喜欢的颜色是红色
Convertir un entero a enumeración
El siguiente ejemplo convierte un entero a enumeración:
Ejemplo
El resultado del ejemplo anterior es:
weekend:1Otras extensiones