Constantes de enumeración (Informática)

Constantes de enumeración (Informática)
Información sobre la plantilla
Concepto:Son constantes de tipo entero, por lo que pueden ser utilizadas en cualquier expresión donde sean permitidas las constantes enteras

Constantes de enumeración (Informática). Existe un tipo especial de variables denominadas variables enumeradas o simplemente enumeraciones. Se caracterizan por poder adoptar valores entre una selección de constantes enteras denominadas enumeradores, cuyos valores son establecidos en el momento de la declaración del nuevo tipo. Son enteros y (una vez establecidos) de valor constante, razón por la que se los denomina también constantes de enumeración.

Ejemplo

  enum estado { MALO =0, REGULAR =1, BUENO =2, EXTRA =3 };

La sentencia anterior declara estado como un tipo de variable de enumeración. Los miembros de esta clase pueden adoptar los valores indicados y son representados por los nemónicos: MALO, REGULAR, BUENO y EXTRA. Estas cuatro constantes son los enumeradores del nuevo tipo.

Para facilitar la legibilidad, los identificadores de las constantes de enumeración son nemónicos, y sus nombres suelen estar en mayúsculas, debido a una larga tradición C/C++ de representar de este modo las constantes.

Las constantes (enumeradores) son de tipo entero, por lo que pueden ser utilizadas en cualquier expresión donde sean permitidas las constantes enteras. Sus identificadores deben ser únicos dentro del ámbito de la declaración enum. Se permiten inicializadores negativos; los valores que adoptan los enumeradores suelen ser únicos (aunque se permiten duplicidades).

Para una visión más detallada de las declaraciones de estas constantes, ver la explicación que sigue sobre la palabra clave enum.

Sintaxis:

enum [<nombre-de-tipo>] {<nombr-const> [= <valor>], ...} [lista_var];

Puede omitirse la palabra clave enum siempre que el nemónico <nombre-de-tipo> no sea empleado para nada más en el mismo ámbito.

Ejemplo:

  calidad { BUENA, REGULAR, MALA };

En este caso el compilador presupone que calidad es un enumerador, y no debe existir otra definición en el mismo ámbito de nombres. En otras palabras: calidad no debe utilizarse en el mismo ámbito para designar otro objeto.

<nombre-de-tipo> es una etiqueta opcional que identifica al conjunto. Puede omitirse si no se va a usar ninguna otra variable de este tipo de enumeración. Ejemplo:

  enum { CIERTO, DUDOSO, FALSO };

<nombr-const> es el nombre de la constante de enumeración (enumerador), a la que opcionalmente puede asignarse el valor definido por <valor>. En el ejemplo anterior son tres: CIERTO, DUDOSO y FALSO.

<valor> debe ser un entero (ya se ha señalado que los enumeradores son constantes enteras). Si no se especifica ningún valor, se supone que es <previo> + 1, donde <previo> es el valor del enumerador anterior de la lista (el valor por defecto para el primero es cero). <valor> puede ser cualquier expresión que resulte en un entero positivo o negativo (después de posible conversión a entero).

<lista_var> es una lista opcional de variables que son declaradas como del tipo enum que se define.

Descripción

La palabra clave enum define una enumeración, una lista de los valores (constantes enteros) que puede tomar una un tipo especial de variable a las que denominaremos variables enumeradas, con la particularidad de que, para mayor legibilidad, esta lista de valores esta representada por nemónicos. Por ejemplo, la declaración:

  enum dias { DOM, LUN, MAR, MIE, JUE, VIE, SAB } diaX;

Establece un tipo enum al que se identifica por dias; las variables de este tipo pueden adoptar un conjunto de seis valores enteros 0, 1, 2, 3, 4, 5, 6 (enumeradores) representados por los nemónicos DOM, LUN,...,SAB. Además se define una variable enumerada diaX de este tipo.

  enum modelo { ULT =-1, BW40=0, C40, BW80, C80, MONO =7 };

En este ejemplo se define un tipo enum al que identificamos por la etiqueta modelo; las variables de este tipo pueden adoptar 6 valores (-1, 0, 1, 2, 3 y 7) que se identifican con los nemónicos: ULT, BW40, C40, BW80, C80 y MONO.

Los valores asignados a los enumeradores dependen del formato de la declaración y de la presencia de inicializadores opcionales.

Ejemplo:

  enum color { ROJO, VERDE, AZUL };

ROJO, VERDE y AZUL son enumeradores del tipo color y pueden ser asignados a cualquier variable de tipo color o a cualquier otra variable de tipo entero. Los valores asignados a los enumeradores son: ROJO == 0, VERDE == 1, AZUL == 2.

Véase también

Fuente