Concetti Chiave
- I tipi di dato enumerativo in C sono un insieme ristretto di valori costanti, che migliorano la leggibilità del codice.
- Le costanti enumerative seguono una sintassi specifica e, se non viene assegnato un valore, il primo è 0 e gli altri sono incrementati di 1.
- La dichiarazione di un tipo enum non riserva memoria, mentre la dichiarazione di variabili di tipo enum lo fa, con possibilità di scrittura contratta.
- In C, le variabili enum possono avere valori diversi da quelli definiti nell'enumerazione e possono utilizzare operatori come gli int.
- Le costanti enumerative devono avere identificatori unici nello stesso scope e possono essere scritte in maiuscolo per convenzione.
Il tipo di dato enumerativo, consiste in un insieme ristretto di valori, ogni elemento ha un proprio identificativo i quali sono trattati come valori costanti, chiamati costanti enumerative.
Caratteristiche dei tipi enum in C
In molti linguaggi i valori delle costanti enumerative non sono assegnati dal programmatore e una variabile di questo tipo può assumere solo i valori assegnati al tipo. I tipi enumerativi sono stati aggiunti a C dall’ANSI e a differenza di altri linguaggi, in C i tipi enum non sono nascosti e hanno la sola funzione di rendere più leggibile il codice, si possono infatti sostituire con le macro.
Dichiarazione e utilizzo dei tipi enum
Il tipo enum deve essere sufficientemente grande a contenere tutti gli int.
enum [tag]
…
nomeN>[=costanteN]
};
Solitamente gli identificatori delle costanti enumerative sono scritte in maiuscolo e il tag è opzionale. Le costanti sono solo int, se non viene specificato altrimenti il primo valore della lista è 0 e i seguenti sono incrementati di 1, a meno che non si specifichi un valore int diverso. Diverse costanti possono avere lo stesso valore, ma due costanti enumerative nello stesso scope non possono avere lo stesso identificativo. Tutte le costanti enumerative e assegnamento, devono essere separati da una virgola e la virgola dopo l’ultimo elemento è opzionale. .
Memoria e variabili nei tipi enum
La dichiarazione di un tipo enum dichiara un nuovo tipo di dato ma non riserva memoria mentre la dichiarazione di variabili di tipo enum riserva memoria, che si possono scrivere anche in forma contratta.
Se non è presente il tag in enum non è possibile dichiarare variabili di quel tipo.
In C alle variabili di tipo enum si possono assegnare valori diversi rispetto a quelli specificati nell’enumerazione. È anche possibile applicare gli operatori, possibili per gli int, alle variabili enum.
Domande da interrogazione
- Quali sono le caratteristiche principali dei tipi enumerativi in C?
- Come si dichiara e si utilizza un tipo enum in C?
- Qual è la relazione tra la dichiarazione di un tipo enum e la riserva di memoria?
I tipi enumerativi in C, introdotti dall'ANSI, non sono nascosti e servono a rendere il codice più leggibile. Ogni elemento ha un identificativo e può assumere solo i valori assegnati al tipo, con il primo valore che è 0 e i successivi incrementati di 1, a meno di specifiche diverse.
Un tipo enum si dichiara utilizzando la sintassi `enum [tag] {costante1, costante2, ...};`, dove le costanti sono generalmente scritte in maiuscolo. È importante notare che le costanti devono essere separate da virgole e che il tag è opzionale.
La dichiarazione di un tipo enum crea un nuovo tipo di dato ma non riserva memoria. Solo la dichiarazione di variabili di tipo enum riserva memoria, e se non è presente il tag, non è possibile dichiarare variabili di quel tipo.