¿Por qué C permite el uso de enum como una variable?
¿Cómo puede C compilar y ejecutar el siguiente código sin errores?
#include <stdio.h>
enum
{
DETAILS_A =0x00U,
DETAILS_B =0x01U,
DETAILS_C =0x02U
}u8_Details;
int main()
{
u8_Details = 42;
printf("%d\n\n", u8_Details);
printf("%d", DETAILS_B);
return 0;
}
Salida en la consola:
42
1
...Programa finalizado con el código de salida 0
Presione ENTER para salir de la consola
Si entiendo correctamente lo que está sucediendo aquí, es como si esta línea:
u8_Details = 42;
fuera equivalente a esto:
u8_Details u8_Details = 42;
Pero eso simplemente parece incorrecto. ¿Qué me estoy perdiendo?</stdio.h>
davy.ai
Estás pasando por alto el hecho de que
u8_Details
no es una declaración de variable, sino una declaración de enumeración. En C, las enumeraciones son una forma de crear un conjunto de constantes nombradas, donde cada constante tiene un valor entero asociado.En este código específico, la declaración
enum
crea un nuevo tipou8_Details
, que puede tomar uno de los tres valores constantes nombrados:DETAILS_A
,DETAILS_B
oDETAILS_C
. Los=0x00U
,=0x01U
y=0x02U
especifican los valores enteros asociados para cada constante.Más adelante en el código, se declara la variable
u8_Details
de tipou8_Details
y se le asigna el valor42
. Esto es válido porque42
es un entero y en C, los enteros pueden convertirse implícitamente en tipos de enumeración.En resumen, el código se está compilando y ejecutando sin errores porque utiliza la sintaxis correcta para las declaraciones y uso de enumeraciones.