Enumerações, ou tipos enumerados, são tipos de dados definidos pelo programador. Uma variável de tipo enumerado pode assumir um valor dentre um conjunto fixo de valores possíveis previamente definido.
Um tipo enumerado é visto como um caso especial de tipo inteiro. Variáveis de tipos enumerados são implementadas pelo compilador usando valores inteiros, mas isso é transparente para o programador.
Um exemplo simples de declaração de tipos enumerados:
// definição do tipo enumerado enum Color_t { BLACK, BLUE, GREEN, RED, YELLOW, WHITE } ; // declaração de variável do tipo enum Color_t enum Color_t c1;
A definição do tipo enumerado também pode ser feita usando typedef
:
typedef enum { BLACK, BLUE, GREEN, RED, YELLOW, WHITE } Color_t ; Color_t c1;
Variáveis enumeradas podem ser usadas como variáveis inteiras:
// atribuição c1 = GREEN ; // uso if (c1 == RED) { ... } // os valores enumerados têm uma ordem definida if (c1 >= BLUE && c1 <= YELLOW) { ... } // variáveis enumeradas podem ser incrementadas c1 = BLACK ; while (c1 <= WHITE) { ... c1++ ; }
Por default, o primeiro valor de um tipo enumerado vale 0 (zero), o segundo valor vale 1 e assim por diante. Esses valores podem ser alterados se isso for conveniente:
typedef enum { BLACK = 1, BLUE, GREEN, RED = 10, YELLOW, WHITE } Color_t ;
Os valores inteiros associados à enumeração são:
valor simbólico | valor original | valor com atribuição |
---|---|---|
BLACK | 0 | 1 |
BLUE | 1 | 2 |
GREEN | 2 | 3 |
RED | 3 | 10 |
YELLOW | 4 | 11 |
WHITE | 5 | 12 |
Tipos enumerados podem ser usados para tornar o código mais legível e também diminuir erros devidos a valores imprevistos em variáveis. Um exemplo clássico de uso de tipos enumerados é a definição de um tipo booleano em C:
typedef enum { FALSE = 0, false = 0, TRUE = 1, true = 1 } bool_t ; bool_t flag ;
Aprovado
, Exame Final
ou Reprovado
de acordo com os dados obtidos.letra
, pontuação
e caractere especial
e guarde os dados em uma estrutura. Para o caso de letras, o programa deve ainda classificá-las, por meio de enumerações, entre maiúsculas
e minúsculas
; vogais
e consoantes
.