C/Enumerazioni, strutture e unioni/Enumerazioni

Indice del libro

In C, un'enumerazione o variabile enumerativa è un tipo di dato che può assumere solo valori scelti dall'utente. Questi valori vengono rappresentati con delle costanti, ognuna corrispondente ad un valore intero.

Sintassi modifica

 enum nome_del_tipo { lista_dei_valori } variabili;

Esempi d'uso modifica

 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
 int main()
 {
 
  enum umano { a_casa, al_lavoro, in_vacanza } mario_rossi;
 
  char stato[20];
 
  printf("Dov'è Mario Rossi? ");
  scanf("%s", stato);
  if (!strcmp(stato, "A_casa"))
  {
   mario_rossi=a_casa;
  }
  else if (!strcmp(stato, "Al_lavoro"))
  {
   mario_rossi=al_lavoro;
  }
  else if (!strcmp(stato, "In_vacanza"))
  {
   mario_rossi=in_vacanza;
  }	
 
  printf("Status numerico di Mario Rossi: %d", mario_rossi);
  
  return 0;
 }

Questo programma tramuta lo stato di Mario Rossi immesso dall'utente in un numero: A_casa=0, Al_lavoro=1, In_vacanza=2.

È anche possibile assegnare un numero a scelta ad ogni numerazione. Se i numeri successivi non sono specificati, il compilatore procederà in ordine crescente.

 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h> 

 int main()
 {
 
  enum umano { a_casa=25, al_lavoro=56, in_vacanza=57 } mario_rossi;
 
  char stato[20];
 
  printf("Dov'è Mario Rossi? ");
  scanf("%s", stato);
  if (!strcmp(stato, "A_casa"))
  {
   mario_rossi=a_casa;
  }
  else if (!strcmp(stato, "Al_lavoro"))
  {
   mario_rossi=al_lavoro;
  }
  else if (!strcmp(stato, "In_vacanza"))
  {
   mario_rossi=in_vacanza;
  }	
 
  printf("Status numerico di Mario Rossi: %d", mario_rossi);
  
  return 0;
 }

In questo caso A_casa=25, Al_lavoro=56, In_Vacanza=57.