Enumerador

Frequentemente, trabalhamos com variáveis que podem assumir valores dentro de um conjunto muito específico. Um produto, por exemplo, pode ser classificado num conjunto específico de categorias: alimentício e limpeza.

Para essas situações, podemos trabalhar com o conceito de enumerador (enum). Na prática, um enumerador é formado por constantes, que serão armazenadas como inteiros positivos.

Na atribuição de valores a um enumerador, podem ser utilizadas as constantes predefinidas pelo desenvolvedor ou números inteiros.

✍🏻 Definindo um enumerador

A sintaxe para definição de um enumerador é bastante simples:

enum nomedoenumerador { valorespossiveis };

Aplicando à categoria de produtos:

enum categoria { ALIMENTACAO, LIMPEZA };

Apesar de visualizarmos as constantes como strings, os valores armazenados na variável desse tipo serão inteiros, iniciando em 0. Assim, ALIMENTACAO será armazenada como 0, enquanto LIMPEZA será armazenada como 1.

⭐ Criando uma variável enum

Para criar uma variável do tipo enum, usamos a seguinte sintaxe:

enum categoria catProd = ALIMENTACAO;

Ao tentarmos imprimir o valor de catProd, teremos como saída o valor 0, como aborado no início da página.

#include <stdio.h>

enum categoria { ALIMENTACAO, LIMPEZA };

int main()
{
    enum categoria catProd = ALIMENTACAO;
    printf("Categoria: %d", catProd);
    return 0;
}

🧮 Atribuição de valores

Como variáveis enumeradoras são armazenadas como números inteiros, a atribuição de valores inteiros é normalmente aceita, como mostra o exemplo a seguir:

#include <stdio.h>

enum categoria { ALIMENTACAO, LIMPEZA };

int main()
{
    enum categoria catProd = 1;
    printf("Categoria: %d", catProd);
    return 0;
}

Da mesma forma, operações aritméticas com as constantes podem ser efetuadas, embora não seja o ideal:

#include <stdio.h>

enum categoria { ALIMENTACAO, LIMPEZA };

int main()
{
    enum categoria catProd = ALIMENTACAO + LIMPEZA;
    printf("Categoria: %d", catProd);
    return 0;
}

🚀 Enumerador com typedef

Podemos facilitar o processo usando o comando typedef para definirmos um tipo de dado.

#include <stdio.h>

typedef enum categoria { ALIMENTACAO, LIMPEZA } categoria;

int main()
{    
    categoria catProd = ALIMENTACAO;
    return 0;
}

📖 Bibliografia

Livros