uniones tipos sirve que para imprimir enumerados enum crear c enums

tipos - ¿Los valores enum predeterminados en C son los mismos para todos los compiladores?



tipos enumerados en c (3)

Al declarar una enumeración como se muestra a continuación, ¿todos los compiladores de C establecen los valores predeterminados como x=0 , y=1 z=2 en los sistemas Linux y Windows?

typedef enum { x, y, z } someName;


Sí, el valor de enum bydefult comienza de 0 a n''th elemento a cualquier plataforma.


Sí. A menos que especifique lo contrario en la definición de la enumeración, el enumerador inicial siempre tiene el valor cero y el valor de cada enumerador posterior es uno mayor que el enumerador anterior.


Estándar C99

El borrador N1265 C99 dice en 6.7.2.2/3 "Especificadores de enumeración"

Un enumerador con = define su constante de enumeración como el valor de la expresión constante. Si el primer enumerador tiene no = , el valor de su constante de enumeración es 0. Cada enumerador posterior con no = define su constante de enumeración como el valor de la expresión constante obtenida sumando 1 al valor de la constante de enumeración previa. (El uso de enumeradores con = puede producir constantes de enumeración con valores que duplican otros valores en la misma enumeración).

Por lo tanto, lo siguiente siempre se aplica a implementaciones conformes:

enum E { E0, E1, E2 = 3, E3, E4 = INT_MAX, /* Compile time error: Overflow in enumeration values */ /*E5*/ }; /* If unspecified, the first is 0. */ assert(E0 == 0); assert(E1 == 1); assert(E2 == 3); /* Continue from the last one. */ assert(E3 == 4); assert(E4 == INT_MAX);