Kurz für Aufzählung, ein Aufzählungsvariablentyp kann in C (ANSI, nicht das ursprüngliche K & R), C ++ und C # gefunden werden. Die Idee ist, dass anstelle eines int zur Darstellung einer Wertemenge ein Typ mit einer eingeschränkten Wertemenge verwendet wird.
Zum Beispiel, wenn wir die Farben des Regenbogens verwenden, die sind
Wenn keine Aufzählungen vorhanden sind, können Sie eine verwenden #definieren (in C) oder const in C ++ / C #, um diese Werte anzugeben. Z.B
Das Problem dabei ist, dass es viel mehr Tinten als Farben gibt. Wenn violett den Wert 7 hat und das Programm einer Variablen den Wert 15 zuweist, handelt es sich eindeutig um einen Fehler, der jedoch möglicherweise nicht erkannt wird, da 15 ein gültiger Wert für ein int ist.
Eine Enumeration ist ein benutzerdefinierter Typ, der aus einer Reihe benannter Konstanten besteht, die als Enumeratoren bezeichnet werden. Die Farben des Regenbogens würden folgendermaßen abgebildet:
Jetzt verwendet der Compiler intern ein int, um diese Werte zu speichern. Wenn keine Werte angegeben werden, ist Rot 0, Orange 1 usw.
Der Punkt ist, dass Regenbogenfarben ist ein Typ und nur andere Variablen desselben Typs können diesem zugewiesen werden. C ist einfacher (dh weniger streng getippt), aber C ++ und C # lassen keine Zuweisung zu, es sei denn, Sie erzwingen dies mithilfe einer Umwandlung.
Sie sind nicht mit diesen vom Compiler generierten Werten konfrontiert. Sie können ihnen wie hier gezeigt eine eigene Ganzzahlkonstante zuweisen.
Blau und Indigo mit demselben Wert zu haben, ist kein Fehler, da Enumeratoren Synonyme wie Scharlach und Purpur enthalten können.
In C muss der Variablendeklaration das Wort vorangestellt werden enum wie in
In C ++ wird es jedoch nicht als benötigt Regenbogenfarben ist ein eindeutiger Typ, für den kein Aufzählungstyp-Präfix erforderlich ist.
In C # wird über den Typnamen wie in auf die Werte zugegriffen
Die Verwendung von Aufzählungen erhöht den Abstraktionsgrad und lässt den Programmierer darüber nachdenken, was die Werte bedeuten, anstatt sich Gedanken darüber zu machen, wie sie gespeichert werden und auf welche Weise auf sie zugegriffen wird. Dies reduziert das Auftreten von Fehlern.