Afkorting voor opsomming, een type opsommingstabel kan worden gevonden in C (ANSI, niet de originele K&R), C ++ en C #. Het idee is dat in plaats van een int te gebruiken om een set waarden weer te geven, in plaats daarvan een type met een beperkte set waarden wordt gebruikt.
Als we bijvoorbeeld de kleuren van de regenboog gebruiken
Als enums niet bestond, zou je een kunnen gebruiken #bepalen (in C) of const in C ++ / C # om deze waarden op te geven. Eg
Het probleem hiermee is dat er veel meer ints zijn dan kleuren. Als violet de waarde 7 heeft en het programma een waarde van 15 toekent aan een variabele, is dit duidelijk een bug, maar wordt deze mogelijk niet gedetecteerd omdat 15 een geldige waarde is voor een int.
Een opsomming is een door de gebruiker gedefinieerd type dat bestaat uit een set benoemde constanten die opsommers worden genoemd. De kleuren van de regenboog zouden als volgt in kaart worden gebracht .:
Intern gebruikt de compiler een int om deze vast te houden en als er geen waarden worden opgegeven, is rood 0, oranje is 1 enz..
Het punt is dat regenboogkleuren is een type en alleen andere variabelen van hetzelfde type kunnen hieraan worden toegewezen. C is gemakkelijker in de omgang (dat wil zeggen minder strikt getypt), maar C ++ en C # staan geen toewijzing toe tenzij je het forceert met een cast.
U zit niet vast aan deze door de compiler gegenereerde waarden, u kunt hieraan uw eigen gehele getalconstante toewijzen, zoals hier wordt weergegeven.
Het hebben van blauw en indigo met dezelfde waarde is geen vergissing, want tellers kunnen synoniemen zijn zoals scarlet en crimson.
In C moet de variabele declaratie worden voorafgegaan door het woord enum als in
In C ++ is het echter niet nodig als regenboogkleuren is een onderscheidend type dat het voorvoegsel van het enum-type niet nodig heeft.
In C # worden de waarden benaderd door de typenaam zoals in
Het gebruik van enums verhoogt het abstractieniveau en laat de programmeur nadenken over wat de waarden betekenen in plaats van zich zorgen te maken over hoe deze worden opgeslagen en benaderd. Dit vermindert het aantal fouten.