Las variables de tipos enumerados
se definen como cualquier otra variable (sintaxis <nombreTipo>
<nombreVariable>) Por ejemplo:
Tamaño t;
El valor por defecto para un
objeto de una enumeración es 0, que puede o no corresponderse con alguno de los
literales definidos para ésta. Así, si la
t del ejemplo fuese un campo su valor sería Tamaño.Pequeño.
También puede dársele otro valor al definirla, como muestra el siguiente
ejemplo donde se le da el valor Tamaño.Grande:
Tamaño t
= Tamaño.Grande; // Ahora t vale
Tamaño.Grande
Nótese que a la hora de hacer
referencia a los literales de una enumeración se usa la sintaxis <nombreEnumeración>.<nombreLiteral>, como es lógico si tenemos en cuenta
que en realidad los literales de una enumeración son constantes publicas y
estáticas, pues es la sintaxis que se usa para acceder a ese tipo de miembros.
El único sitio donde no es necesario preceder el nombre del literal de <nombreEnumeración>. es en la propia definición de la enumeración, como también
ocurre con cualquier constante estática.
En realidad los literales de una
enumeración son constantes de tipos enteros y las variables de tipo enumerado
son variables del tipo entero base de la enumeración. Por eso es posible
almacenar valores de enumeraciones en variables de tipos enteros y valores de
tipos enteros en variables de enumeraciones. Por ejemplo:
int i =
Tamaño.Pequeño; // Ahora i vale 0
Tamaño t
= (Tamaño) 0; //Ahora t vale
Tamaño.Pequeño (=0)
t =
(Tamaño) 100; // Ahora t
vale 100, que no se corresponde con ningún literal
Como se ve en el último ejemplo,
también es posible darle a una enumeración valores enteros que no se
correspondan con ninguno de sus literales.
Dado que los valores de una enumeración son enteros, es posible aplicarles
muchos de las operaciones que se pueden
aplicar a los mismos: ==, !=, <, >, <=, >=, +, ‑, ^, &, |, ~, ++, -- y sizeof. Sin embargo, hay que concretar que
los operadores binarios + y – no pueden aplicarse entre dos
operandos de enumeraciones, sino que al menos uno de ellos ha de ser un tipo
entero; y que |, & y ^ sólo pueden aplicarse entre enumeraciones.