Como usar enum em linguagem c

Como usar enum em linguagem c
O programa enum na linguagem de programação C é usado para definir valores constantes integrais, o que é muito útil ao escrever programas limpos e legíveis. Os programadores normalmente usam a enumeração para definir constantes integrais nomeadas em seus programas para fornecer melhor legibilidade e manutenção do software. Este artigo discutirá enum em detalhes.

Sintaxe

enum
Enumeração_constant_element-1,
Enumeração_constant_element-2,
Enumeração_constant_element-3,
.. ,
Enumeração_constant_element-n,
;

O valor padrão de enumeração_constant_element-1 é 0, o valor de enumeração_constant_element-2 é 1, o valor de enumeração_constant_element-3 é 2 e o valor de enumeração_constant_element-n é (n-1).

Mergulhe profundo em enum

Agora, como sabemos a sintaxe para definir o tipo de enumeração, vejamos um exemplo:

Erro de enum
Io_error,
Disk_error,
ERRO DE REDE
;

A palavra -chave "enum" deve sempre ser usada para definir o tipo de enumeração. Portanto, sempre que você quiser definir um tipo de enumeração, você deve usar a palavra -chave "enum" antes . Após a palavra -chave "enum", você deve usar um identificador válido para definir o .

No exemplo acima, o compilador atribuirá io_error ao valor integral: 0, Disk_error ao valor integral: 1 e Network_error ao valor integral: 2. Por padrão, o primeiro elemento enum é sempre atribuído o valor 0, o próximo elemento enum é atribuído o valor 1 e assim por diante.

Esse comportamento padrão pode ser alterado, se necessário, atribuindo o valor integral constante explicitamente, como segue:

Erro de enum
Io_error = 2,
Disk_error,
Network_error = 8 ,
Print_error
;

Nesse caso, o io_error é explicitamente atribuído a um valor 2 pelo programador, o Disk_error é atribuído a um valor 3 pelo compilador, o Network_error é atribuído explicitamente ao valor de 8 pelo programador, e Print_error é atribuído ao próximo Valor integral do elemento enum anterior Network_error (i.e., 9) pelo compilador.

Então, agora você entende como definir um tipo de enumeração definido pelo usuário em C. É possível declarar uma variável do tipo enum (como podemos declarar uma variável do tipo inteiro)? É sim! Você pode declarar a variável enum da seguinte maneira:

Erro de enum hw_error;

Novamente, "enum" é a palavra -chave aqui, "erro" é o tipo de enum, e "hw_error" é uma variável enum.

Agora veremos os seguintes exemplos para entender os vários usos de enum:

  • Exemplo 1: Uso da definição de enum padrão
  • Exemplo 2: Uso da definição de enum personalizada
  • Exemplo 3: Definição de Enum usando expressão constante
  • Exemplo 4: Enum Scope

Exemplo 1: Uso da definição de enum padrão

Neste exemplo, você aprenderá como definir o tipo de enumeração com valores constantes padrão. O compilador cuidará de atribuir os valores padrão aos elementos de enum. Abaixo, você verá o programa de exemplo e a saída correspondente.

#incluir
/ * Defina o tipo enum */
Erro de enum
Io_error,
Disk_error,
ERRO DE REDE
;
int main ()

Erro de enum hw_error; /* Criando variável enum*/
printf ("Configurando hw_error para io_error \ n");
Hw_error = io_error;
printf ("Valor de hw_error = %d \ n", hw_error);
printf ("\ nsetting hw_error para disk_error \ n");
Hw_error = disk_error;
printf ("Valor de hw_error = %d \ n", hw_error);
printf ("\ nsetting hw_error para network_error \ n");
Hw_error = network_error;
printf ("Valor de hw_error = %d \ n", hw_error);
retornar 0;

Exemplo 2: Uso da definição de enum personalizada

Neste exemplo, você aprenderá como definir o tipo de enumeração com um valor constante personalizado. Além disso, este exemplo ajudará você a entender como a inicialização das constantes personalizadas pode ser feita em qualquer ordem aleatória. Neste exemplo, definimos explicitamente o valor constante para o 1st e 3rd enum elementos (eu.e., Io_error e Network_error, respectivamente), mas ignoramos a inicialização explícita para os 2nd e 4º elementos. Agora é de responsabilidade do compilador atribuir os valores padrão ao 2nd e 4º enum elementos (eu.e., Disk_error e print_error, respectivamente). Disk_error será atribuído a um valor de 3 e Print_error será atribuído a um valor de 9. Abaixo, você verá o programa de exemplo e a saída.

#incluir
/* Defina o tipo de enumeração - inicialização personalizada*/
Erro de enum
Io_error = 2,
Disk_error,
Network_error = 8,
Print_error
;
int main ()

/* Declare enum variável*/
Erro de enum hw_error;
printf ("Configurando hw_error para io_error \ n");
Hw_error = io_error;
printf ("Valor de hw_error = %d \ n", hw_error);
printf ("\ nsetting hw_error para disk_error \ n");
Hw_error = disk_error;
printf ("Valor de hw_error = %d \ n", hw_error);
printf ("\ nsetting hw_error para network_error \ n");
Hw_error = network_error;
printf ("Valor de hw_error = %d \ n", hw_error);
printf ("\ nSetting hw_error para print_error \ n");
Hw_error = print_error;
printf ("Valor de hw_error = %d \ n", hw_error);
retornar 0;

Exemplo 3: Definição de Enum usando expressão constante

Neste exemplo, você aprenderá a usar a expressão constante para definir o valor constante para os elementos de enum.

#incluir
/* Defina o tipo de enumeração - inicialização personalizada usando expressão constante
A expressão constante está sendo usada aqui no caso de:
a. Io_error e
b. ERRO DE REDE
Esta é uma maneira incomum de definir os elementos da enumeração; No entanto, isso
O programa demonstra que essa maneira de enum elementos inicialização é possível em c.
*/
Erro de enum
Io_error = 1 + 2 * 3 + 4,
Disk_error,
Network_error = 2 == 2,
Print_error
;
int main ()

/* Declare enum variável*/
Erro de enum hw_error;
printf ("Configurando hw_error para io_error \ n");
Hw_error = io_error;
printf ("Valor de hw_error = %d \ n", hw_error);
printf ("\ nsetting hw_error para disk_error \ n");
Hw_error = disk_error;
printf ("Valor de hw_error = %d \ n", hw_error);
printf ("\ nsetting hw_error para network_error \ n");
Hw_error = network_error;
printf ("Valor de hw_error = %d \ n", hw_error);
printf ("\ nSetting hw_error para print_error \ n");
Hw_error = print_error;
printf ("Valor de hw_error = %d \ n", hw_error);
retornar 0;

Exemplo 4: Enum Scope

Neste exemplo, você aprenderá como a regra de escopo funciona para enum. Uma macro (#Define) poderia ter sido usada para definir uma constante em vez da enumeração, mas a regra do escopo não funciona para a macro.

#incluir
int main ()

/ * Defina o tipo enum */
enum error_1
Io_error = 10,
Disk_error,
Network_error = 3,
Print_error
;

/* Defina o tipo de enumeração no escopo interno*/
enum error_1
Io_error = 20,
Disk_error,
Network_error = 35,
Print_error
;
/* Declare enum variável*/
enum error_1 hw_error;
printf ("Configurando hw_error para io_error \ n");
Hw_error = io_error;
printf ("Valor de hw_error = %d \ n", hw_error);
printf ("\ nsetting hw_error para disk_error \ n");
Hw_error = disk_error;
printf ("Valor de hw_error = %d \ n", hw_error);
printf ("\ nsetting hw_error para network_error \ n");
Hw_error = network_error;
printf ("Valor de hw_error = %d \ n", hw_error);
printf ("\ nSetting hw_error para print_error \ n");
Hw_error = print_error;
printf ("Valor de hw_error = %d \ n", hw_error);

retornar 0;

Comparação entre enum e macro

Enum Macro
A regra de escopo é aplicável para enum. A regra de escopo não é aplicável à macro.
A atribuição de valor de enum padrão acontece automaticamente.

Enum é muito útil para definir um grande número de constantes. O compilador toma a inicialização do valor constante padrão.

Os valores constantes macro devem sempre ser mencionados explicitamente pelo programador.

Isso pode ser um processo tedioso para um grande número de constantes, pois o programador deve sempre definir manualmente cada valor constante enquanto definiu a macro.

Conclusão

O programa enum em C pode ser considerado um método opcional para programas independentes ou projetos de tamanho pequeno, pois os programadores sempre podem usar macro em vez de uma enum. No entanto, programadores experientes tendem a usar enum sobre macro para projetos de desenvolvimento de software em larga escala. Isso ajuda a escrever programas limpos e legíveis.