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
y z=2
en los sistemas Linux y Windows?
typedef enum {
x,
y,
z
} someName;
SSS
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
y z=2
en los sistemas Linux y Windows?
typedef enum {
x,
y,
z
} someName;
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.
y tanto C como C++ requieren este comportamiento idéntico. En C++, es [dcl.enum]
: “Si el primer enumerador no tiene inicializador, el valor de la constante correspondiente es cero. Una definición de enumerador sin inicializador le da al enumerador el valor obtenido al aumentar el valor del enumerador anterior en uno”.
– Ben Voigt
22 de junio de 2011 a las 2:06
Sí, y también otros lenguajes que comienzan con la letra C, como C#.
–James McNellis
22 de junio de 2011 a las 2:07
ser mar 't'
no está garantizado, puede haber juegos de caracteres en los que las letras no estén en orden alfabético consecutivo
–MM
27 de mayo de 2019 a las 5:25
Sí, el valor enumerado comienza de forma predeterminada desde 0 hasta el elemento n para cualquier plataforma.
Considere cómo su respuesta se suma al grupo de respuestas. Es decir, ¿cómo agrega su nueva respuesta (5 años después) algo nuevo que no está cubierto en otra respuesta? A primera vista, parece ser menos informativo que las otras dos respuestas.
– Legalmente malvado
2 de junio de 2016 a las 11:45
Ehhh @LawfulEvil tranquilo. Las respuestas múltiples dan a las personas que miran esto en el futuro múltiples perspectivas. Dicho esto, esta es una respuesta poco informativa y mal formateada, pero las respuestas amplias en sí mismas no son malas.
– Kenny Worden
1 de marzo de 2018 a las 6:27
Considere cómo su respuesta se suma al grupo de respuestas. Es decir, ¿cómo agrega su nueva respuesta (5 años después) algo nuevo que no está cubierto en otra respuesta? A primera vista, parece ser menos informativo que las otras dos respuestas.
– Legalmente malvado
2 de junio de 2016 a las 11:45
Ehhh @LawfulEvil tranquilo. Las respuestas múltiples dan a las personas que miran esto en el futuro múltiples perspectivas. Dicho esto, esta es una respuesta poco informativa y mal formateada, pero las respuestas amplias en sí mismas no son malas.
– Kenny Worden
1 de marzo de 2018 a las 6:27
Sí, es requerido por los estándares, y estoy seguro de que alguien podrá citarlos.
– Nemo
22 de junio de 2011 a las 2:05