C/C++ Sintassi:
enum name {name-list} var-list;
Parola chiave enum viene usata per creare un tipo numerato di nome name che consiste di tutti gli elementi nella name-list. L'oargomento var-list è opzionale e può essere usato per creare istanze del tipo di dato definito dalla dichiarazione. Esempio: il frammento di codice che segue crea un enum per elencare dei colori.
enum ColorT {red, orange, yellow, green, blue, indigo, violet}; ... ColorT c1 = indigo; if( c1 == indigo ) { cout << "c1 is indigo" << endl; }
Nell'esempio sopra l'effetto dell'enumerazione è quello di introdurre nuove costanti chiamate red,orange,yellow,etc. Per default a queste costanti vengono assegnati valori interi consecutivi a partire dallo zero. Si può cambiare questo comportamento forzando determinati valori.
enum ColorT { red = 10, blue = 15, green }; ... ColorT c = green; cout << "c is " << c << endl;
L'output del codice sarebbe:
c is 16
L'esempio precedente verrebbe compilato solo con un compilatore C++. Se foste nella condizione di dover lavorare anche con codice C avreste bisogno di specificare la parola chiave enum dovunque create un'istanza dell'enumeratore.
enum ColorT { red = 10, blue = 15, green }; ... enum ColorT c = green; /* note the additional enum keyword */ printf( "c is %d\n", c );
Alternativamente si può aggiungere un typedef per fare in modo funzioni sia in C che C++.
typedef enum ColorT { red = 10, blue = 15, green } ColorT; ... ColorT c = green; /* no more additional enum keyword */ printf( "c is %d\n", c );
In C++ è possibile anche confrontare qualunque nome presente nella lista di un qualsiasi enum con una variabile di tipo intero.
enum colore{ BIANCO, NERO }; ... std::cin >> variabile; switch( variabile ) { case BIANCO: std::cout << "Hai inserito il numero corrispondente al colore bianco" << std::endl; break; case NERO: std::cout << Hai inserito il numero corrispondente al colore nero" << std::endl; break; default: std::cout << "Inserisci: " << BIANCO << "per bianco\n" << NERO << "per nero" << std::endl; break; }