0Pricing
C Academy · Lektion

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

  1. Enums definieren
  2. Enum-Werte und Wertebereiche
  3. const-Variablen
  4. #define-Konstanten
← Zurück zu C Academy