Enum em C


 

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
 

exemplo utilizando enum

Tela de execução do exemplo utilizando enum

Exemplo utilizando enum valor invalido

Tela de execução do exemplo utilizando enum com valor invalido


 
Até a próxima!




Uma resposta a Enum em C

  1. Edvan Marques disse:

    parabéns explicou de forma clara e objetiva como utilizar o enum! :)

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>