Enum-Werte und Wertebereiche
Steuern Sie die zugrunde liegenden Ganzzahlen.
Enum-Werte und Wertebereiche ist eine kostenlose C Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C Academy-Kurs umfasst insgesamt 4 Lektionen.
Explizite Werte zuweisen
Sie sind nicht auf die Standardsprfolge 0, 1, 2 festgelegt. Mit = können Sie einem Namen eine beliebige Ganzzahl zuweisen.
Das ist nützlich, wenn die Zahlen mit einem externen System übereinstimmen müssen, etwa mit HTTP-Statuscodes.
enum Http { OK = 200, NOT_FOUND = 404, ERROR = 500 };Benutzerdefinierte Werte ausgeben
Sobald sie zugewiesen sind, werden genau diese Zahlen gespeichert und ausgegeben.
Hier werden die Enum-Namen direkt den standardmäßigen HTTP-Codes zugeordnet.
#include <stdio.h>
enum Http { OK = 200, NOT_FOUND = 404, ERROR = 500 };
int main(void) {
printf("%d %d\n", OK, NOT_FOUND);
return 0;
}Explizite und Standardwerte mischen
Wenn Sie einige Werte festlegen und andere frei lassen, zählt jeder nicht belegte Name ab dem vorherigen Wert weiter.
Ein Name direkt nach = 10 erhält also den Wert 11, danach 12 und so weiter.
#include <stdio.h>
enum N { A = 10, B, C, D = 100, E };
int main(void) {
printf("%d %d %d %d %d\n", A, B, C, D, E);
return 0;
}Bei Eins beginnen
Ein verbreiteter Trick besteht darin, den ersten Wert auf 1 statt auf 0 zu setzen, damit die Nummerierung dem menschlichen Zählen entspricht.
Hier ist MON gleich 1, sodass die Tage von 1 bis 7 laufen.
#include <stdio.h>
enum Day { MON = 1, TUE, WED, THU, FRI, SAT, SUN };
int main(void) {
printf("%d %d\n", MON, SUN);
return 0;
}Doppelte Werte sind zulässig
Zwei Enum-Namen können denselben ganzzahligen Wert haben. C verlangt nicht, dass sie eindeutig sind.
Manchmal wird dies verwendet, um Aliase für dasselbe Konzept zu erstellen.
#include <stdio.h>
enum Color { RED = 1, CRIMSON = 1, BLUE = 2 };
int main(void) {
printf("%d %d\n", RED, CRIMSON);
return 0;
}Negative Werte
Enum-Werte können auch negativ sein. Sie sind vorzeichenbehaftete Ganzzahlen.
Damit lassen sich Fehlercodes kleiner als null zusammen mit einem neutralen oder positiven Wertebereich ausdrücken.
#include <stdio.h>
enum Temp { COLD = -1, NORMAL = 0, HOT = 1 };
int main(void) {
printf("%d %d %d\n", COLD, NORMAL, HOT);
return 0;
}Der COUNT-Sentinel-Trick
Wenn Sie Elemente bei 0 beginnend auflisten und einen letzten Namen hinzufügen, entspricht dieser letzte Name der Anzahl der Elemente.
Mit diesem COUNT-Trick wird die Größe automatisch ermittelt, auch wenn Sie später weitere Elemente hinzufügen.
#include <stdio.h>
enum Fruit { APPLE, PEAR, KIWI, FRUIT_COUNT };
int main(void) {
printf("%d fruits\n", FRUIT_COUNT);
return 0;
}Enums als Array-Indizes
Da Enum-Werte Ganzzahlen sind, eignen sie sich hervorragend als Array-Indizes.
Zusammen mit dem COUNT-Trick können Sie ein Array exakt dimensionieren und mit lesbaren Namen indizieren.
#include <stdio.h>
enum Fruit { APPLE, PEAR, KIWI, FRUIT_COUNT };
int main(void) {
int stock[FRUIT_COUNT] = {5, 3, 8};
printf("%d\n", stock[PEAR]);
return 0;
}Der zugrunde liegende Typ
In standardkonformem C werden Enum-Werte in einem vom Compiler ausgewählten Ganzzahltyp gespeichert, normalerweise int.
Der Typ ist groß genug, um jeden von Ihnen definierten Wert aufzunehmen, sodass auch große oder negative Konstanten hineinpassen.
#include <stdio.h>
enum Big { SMALL = 0, LARGE = 1000000 };
int main(void) {
printf("%d\n", LARGE);
return 0;
}Keine integrierte Bereichsprüfung
C hindert Sie nicht daran, einer Enum-Variable einen Wert zuzuweisen, der nicht in der Aufzählung enthalten ist.
Die folgende Zuweisung wird kompiliert und ausgeführt. Sie sind selbst dafür verantwortlich, die Gültigkeit der Werte sicherzustellen.
#include <stdio.h>
enum Level { LOW, MID, HIGH };
int main(void) {
enum Level x = 99;
printf("%d\n", x);
return 0;
}Über einen Wertebereich iterieren
Wenn ein Enum von 0 bis zu einem COUNT-Sentinel reicht, können Sie mit einem einfachen for über jeden Wert iterieren.
Dadurch wird jedes definierte Element bis einschließlich vor dem Zählwert durchlaufen.
#include <stdio.h>
enum Fruit { APPLE, PEAR, KIWI, FRUIT_COUNT };
int main(void) {
for (int f = APPLE; f < FRUIT_COUNT; f++)
printf("%d ", f);
printf("\n");
return 0;
}Kurztest
Analysieren Sie gemischte Enum-Werte.
Zusammenfassung
Sie können explizite Enum-Werte zuweisen, sie mit Standardwerten mischen, Werte wiederholen und negative Werte verwenden.
Der COUNT-Sentinel-Trick verfolgt die Listengröße automatisch, und Enums eignen sich hervorragend als Array-Indizes. Denken Sie daran: C führt keine Bereichsprüfung durch, daher müssen Sie die Werte selbst validieren.
Häufig gestellte Fragen
Ist die Lektion „Enum-Werte und Wertebereiche“ kostenlos?
Ja — der vollständige Text von „Enum-Werte und Wertebereiche“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Enum-Werte und Wertebereiche“?
Steuern Sie die zugrunde liegenden Ganzzahlen. Du übst C Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C Academy zu starten?
Keine Vorkenntnisse erforderlich. C Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Enum-Werte und Wertebereiche“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C Academy-Lektion Code schreiben und ausführen?
Ja. Jede C Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Enums definieren
- Enum-Werte und Wertebereiche
- const-Variablen
- #define-Konstanten