Por: Eduardo Casavella
É um tipo de dado definido pelo usuário que define uma variável que vai receber apenas um conjunto restrito de valores. Na realidade, um enum é um conjunto de valores inteiros representados por identificadores.
Sintaxe:
enum < nome > { < constante1 > , < constante2 > , · · · , < constanteN > , }
Um exemplo clássico é usar uma enum para armazenar os meses do ano. Vejamos como funciona:
enum meses_do_ano { Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro}
Por padrão o primeiro valor de uma enum é inicializado com zero. Mas é possível determinar o valor inicial, basta declarar o primeiro valor para o identificador, e os valores seguintes serão automaticamente calculados com um incremento de uma unidade.
Então podemos atribuir o valor 1 para janeiro como abaixo:
enum meses_do_ano { Janeiro=1, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro}
Alguns compiladores são capazes de verificar quando um valor que não está na lista da enum está sendo atribuído, porém outros não são, logo isto fica a cargo do programador.
Exemplo: Utilizando enum
#include <stdio.h> #include <conio.h> //definição da enum enum meses_do_ano {Janeiro = 1, Fevereiro, Marco, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro}meses; int main(void) { printf("Digite o numero do mes: "); scanf("%d",&meses); //Testando se o valor está na faixa válida usando os valores da enum if((meses >= Janeiro) && (meses <= Dezembro)) { //switch que determina qual mes será impresso na tela switch(meses) { case Janeiro: printf("%d - Janeiro",meses); break; case Fevereiro: printf("%d - Fevereiro",meses); break; case Marco: printf("%d - Marco",meses); break; case Abril: printf("%d - Abril",meses); break; case Maio: printf("%d - Maio",meses); break; case Junho: printf("%d - Junho",meses); break; case Julho: printf("%d - Julho",meses); break; case Agosto: printf("%d - Agosto",meses); break; case Setembro: printf("%d - Setembro",meses); break; case Outubro: printf("%d - Outubro",meses); break; case Novembro: printf("%d - Novembro",meses); break; case Dezembro: printf("%d - Dezembro",meses); break; } } else //senão estiver na faixa válida exibe mensagem { printf("Valor INVALIDO!!!\n"); printf("Os valores validos para os meses do ano sao: \n\n"); //Loop que exibe a faixa de valores válida //Note que os valores da enum são na realidade inteiros //então podemos incrementa-los e usar no loop for(meses = Janeiro; meses <= Dezembro; meses++) printf("Mes: %d \n",meses); } getch(); return 0; }
Tela de execução
Até a próxima!
4 respostas a Enum em C