Abbreviazione di enumerazione, un tipo di variabile enum può essere trovato in C (ANSI, non nell'originale K&R), C ++ e C #. L'idea è che invece di utilizzare un int per rappresentare un insieme di valori, viene utilizzato un tipo con un insieme limitato di valori.
Ad esempio, se usiamo i colori dell'arcobaleno, che sono
Se gli enum non esistessero, potresti usare a #definire (in C) o const in C ++ / C # per specificare questi valori. Per esempio
Il problema è che ci sono molti più ints che colori. Se il viola ha il valore 7 e il programma assegna un valore di 15 a una variabile, allora è chiaramente un bug ma potrebbe non essere rilevato poiché 15 è un valore valido per un int.
Un enum è un tipo definito dall'utente costituito da un insieme di costanti denominate chiamate enumeratori. I colori dell'arcobaleno sarebbero mappati in questo modo .:
Ora internamente, il compilatore utilizzerà un int per mantenerli e se non viene fornito alcun valore, il rosso sarà 0, l'arancione sarà 1 ecc..
Il punto è che rainbowcolors è un tipo e solo altre variabili dello stesso tipo possono essere assegnate a questo. C è più facile (cioè meno tipizzato), ma C ++ e C # non consentono l'assegnazione a meno che non la forzate utilizzando un cast.
Non sei bloccato con questi valori generati dal compilatore, puoi assegnargli la tua costante intera come mostrato qui.
Avere blu e indaco con lo stesso valore non è un errore in quanto gli enumeratori potrebbero includere sinonimi come scarlatto e cremisi.
In C, la dichiarazione della variabile deve essere preceduta dalla parola enum come in
In C ++, tuttavia, non è necessario come rainbowcolors è un tipo distinto che non necessita del prefisso del tipo enum.
In C # i valori sono accessibili dal nome del tipo come in
L'uso di enum aumenta il livello di astrazione e consente al programmatore di pensare a cosa significano i valori piuttosto che preoccuparsi di come sono memorizzati e accessibili. Ciò riduce il verificarsi di bug.