Concetti Chiave
- Il tipo di dato enumerativo è un insieme ristretto di valori con identificatori unici, trattati come costanti.
- In C, i tipi enum rendono il codice più leggibile, ma possono essere sostituiti con macro e non nascondono i loro valori.
- Le costanti enumerative sono solitamente scritte in maiuscolo e iniziano da 0, incrementate di 1, a meno che non si specifichi diversamente.
- Una dichiarazione enum crea un nuovo tipo di dato ma non riserva memoria; la memoria è riservata solo quando si dichiarano variabili enum.
- In C, le variabili enum possono assumere valori diversi dai definiti nell’enumerazione e supportano gli operatori degli int.
Tipo di dati enum
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.
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.
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. .
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.