C enum (Aufzählung)

Aufzählung ist ein grundlegender Datentyp in C, mit dem eine Menge von Konstanten mit diskreten Werten definiert wird. Sie macht Daten prägnanter und lesbarer.

Aufzählungstypen werden typischerweise verwendet, um einer Gruppe zusammengehöriger Konstanten in einem Programm Namen zuzuweisen, wodurch das Programm lesbarer und wartbarer wird.

Um einen Aufzählungstyp zu definieren, müssen Sie das Schlüsselwortenumverwenden, gefolgt vom Namen des Aufzählungstyps, und mit geschweiften Klammern{}eine Menge von Aufzählungskonstanten einschließen. Jede Aufzählungskonstante kann durch einen Bezeichner dargestellt werden, und Sie können auch einen ganzzahligen Wert für sie angeben. Wenn nicht angegeben, standardmäßig ab0Beginnt mit der Inkrementierung.

Das Format der enum-Syntaxdefinition ist:

enum 枚举名 {枚举元素1,枚举元素2,……};

Als Nächstes nehmen wir ein Beispiel: Eine Woche hat 7 Tage. Wenn wir keine Enums verwenden, müssen wir #define verwenden, um für jede Ganzzahl einen Alias zu definieren:

#define MON 1 #define TUE 2 #define WED 3 #define THU 4 #define FRI 5 #define SAT 6 #define SUN 7

Das sieht nach ziemlich viel Code aus. Schauen wir uns als Nächstes die Verwendung von Enums an:

enum DAY
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
};

Sieht das nicht prägnanter aus?

Hinweis:Der Standardwert des ersten Enumerationselements ist die Ganzzahl 0, und der Wert jedes nachfolgenden Enumerationselements ist der Wert des vorherigen Elements plus 1. In diesem Beispiel definieren wir den Wert des ersten Enumerationselements als 1, den zweiten als 2 und so weiter.

Sie können die Werte von Enum-Elementen beim Definieren des Enum-Typs ändern:

enum season {spring, summer=3, autumn, winter};

Enum-Elemente ohne angegebenen Wert haben den Wert des vorherigen Elements plus 1. Das heißt, Frühling ist 0, Sommer ist 3, Herbst ist 4, Winter ist 5

Definition von Enum-Variablen

Zuvor haben wir nur den Enum-Typ deklariert. Als Nächstes sehen wir, wie man Enum-Variablen definiert.

Wir können Enum-Variablen auf die folgenden drei Arten definieren

1. Zuerst den Enum-Typ definieren, dann die Enum-Variable definieren

enum DAY
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
};
enum DAY day;

2. Die Enum-Variable definieren, während der Enum-Typ definiert wird

enum DAY
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;

3. Den enum-Namen weglassen und die enum-Variable direkt definieren

enum
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;

Beispiel

#include <stdio.h> enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN }; int main() { enum DAY day; day = WED; printf("%d",day); return 0; }

Das Ausgabeergebnis des obigen Beispiels ist:

3

In C werden enum-Typen als int- oder unsigned-int-Typen behandelt, daher gibt es gemäß der C-Sprachspezifikation keine Möglichkeit, einen enum-Typ zu durchlaufen.

In einigen Sonderfällen muss der enum-Typ jedoch zusammenhängend sein, was eine bedingte Durchquerung ermöglicht.

Das folgende Beispiel verwendet eine for-Schleife, um die enum-Elemente zu durchlaufen:

Beispiel

#include <stdio.h> enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN } day; int main() { // enum-Elemente durchlaufen for (day = MON; day <= SUN; day++) { printf("Enum-Element: %d\n", day); } }

Das Ausgabeergebnis des obigen Beispiels ist:

枚举元素:1 
枚举元素:2 
枚举元素:3 
枚举元素:4 
枚举元素:5 
枚举元素:6 
枚举元素:7

Der folgende Enum-Typ ist nicht fortlaufend, und diese Art von Enum kann nicht durchlaufen werden.

enum
{
    ENUM_0,
    ENUM_10 = 10,
    ENUM_11
};

Verwendung von Enums in switch:

Beispiel

#include <stdio.h> #include <stdlib.h> int main() { enum color { red=1, green, blue }; enum color favorite_color; /*Benutzer gibt eine Zahl ein, um eine Farbe auszuwählen*/ printf("Bitte geben Sie Ihre Lieblingsfarbe ein: (1. rot, 2. grün, 3. blau):"); scanf("%u", &favorite_color); /*Ergebnis ausgeben*/ switch (favorite_color) { case red: printf("Die Farbe, die Ihnen gefällt, ist rot."); break; case green: printf("Ihre Lieblingsfarbe ist grün"); break; case blue: printf("Deine Lieblingsfarbe ist blau"); break; default: printf("Du hast deine Lieblingsfarbe nicht gewählt"); } return 0; }

Das Ausgabeergebnis des obigen Beispiels ist:

请输入你喜欢的颜色: (1. red, 2. green, 3. blue): 1
你喜欢的颜色是红色

Umwandeln einer Ganzzahl in eine Enumeration

Das folgende Beispiel wandelt Ganzzahlen in Enumerationen um:

Beispiel

#include <stdio.h> #include <stdlib.h> int main() { enum day { saturday, sunday, monday, tuesday, wednesday, thursday, friday } workday; int a = 1; enum day weekend; weekend = ( enum day ) a; //Typkonvertierung //weekend = a; //Fehler printf("weekend:%d",weekend); return 0; }

Das Ausgabeergebnis des obigen Beispiels ist:

weekend:1
Weitere Erweiterungen