Enums deklarieren und verwenden
Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 56 von 63.
Nachdem Sie ein enum definiert haben, können Sie Variablen dieses Enum-Typs erstellen und ihnen aussagekräftige Werte zuweisen. Hier spielen Enums ihre Stärken aus – anstatt mit verwirrenden Zahlen zu arbeiten, verwenden Sie beschreibende Namen.
Um eine Variable eines Enum-Typs zu deklarieren, verwenden Sie dieselbe Syntax wie bei der Deklaration jeder anderen Variable:
enum DayOfWeek today;
enum DayOfWeek weekend_day;Sie können diesen Variablen dann Werte unter Verwendung der benannten Konstanten aus Ihrem Enum zuweisen:
today = WEDNESDAY;
weekend_day = SATURDAY;Vergleichen Sie dies mit der Verwendung von reinen Zahlen: today = 2; und weekend_day = 5;. Die Enum-Version verrät Ihnen sofort, mit welchem Tag Sie arbeiten, während die Zahlen von Ihnen verlangen, sich zu merken, was jeder Wert bedeutet. Dies macht Ihren Code viel lesbarer und weniger anfällig für Fehler.
Aufgabe
EinfachErstellen Sie ein C-Programm, das die Deklaration und Verwendung von Enum-Variablen für ein einfaches Aufgabenverwaltungssystem demonstriert. Ihr Programm sollte:
- Ein
enumnamensTaskStatusmit den folgenden Konstanten in genau dieser Reihenfolge definieren:PENDINGIN_PROGRESSCOMPLETEDCANCELLED
- In der main-Funktion:
- Drei Variablen vom Typ
enum TaskStatusnamenstask1,task2undtask3deklarieren - Drei Ganzzahlen von der Eingabe lesen, die den Status jeder Aufgabe repräsentieren (0, 1, 2 oder 3)
- Jedem Aufgaben-Variable basierend auf der Eingabe die entsprechenden Enum-Werte zuweisen:
- Wenn die Eingabe 0 ist, weisen Sie
PENDINGzu - Wenn die Eingabe 1 ist, weisen Sie
IN_PROGRESSzu - Wenn die Eingabe 2 ist, weisen Sie
COMPLETEDzu - Wenn die Eingabe 3 ist, weisen Sie
CANCELLEDzu
- Wenn die Eingabe 0 ist, weisen Sie
- Den Status jeder Aufgabe unter Verwendung der Enum-Werte in genau diesem Format ausgeben:
Task 1 status: [numeric_value]Task 2 status: [numeric_value]Task 3 status: [numeric_value]
- Zählen und ausgeben, wie viele Aufgaben in jeder Statuskategorie sind:
Pending tasks: [count]In progress tasks: [count]Completed tasks: [count]Cancelled tasks: [count]
- Die Gesamtzahl der aktiven Aufgaben (Aufgaben, die entweder
PENDINGoderIN_PROGRESSsind) berechnen und in genau diesem Format ausgeben:Active tasks: [count]
- Drei Variablen vom Typ
Diese Herausforderung zeigt, wie Enum-Variablen den Code lesbarer machen, indem sie aussagekräftige Namen anstelle von reinen Zahlen verwenden. Sie üben das Deklarieren von Enum-Variablen, das Zuweisen von Enum-Werten basierend auf Eingaben, die Verwendung von Enum-Konstanten in Vergleichen und das Durchführen von Berechnungen mit Enum-Werten.
Spickzettel
Um Variablen eines Enum-Typs zu deklarieren, verwenden Sie dieselbe Syntax wie bei der Deklaration jeder anderen Variable:
enum DayOfWeek today;
enum DayOfWeek weekend_day;Weisen Sie Enum-Variablen Werte unter Verwendung der benannten Konstanten aus Ihrem Enum zu:
today = WEDNESDAY;
weekend_day = SATURDAY;Die Verwendung von Enum-Namen anstelle von reinen Zahlen macht den Code lesbarer und weniger fehleranfällig. Vergleichen Sie today = WEDNESDAY; mit today = 2; – die Enum-Version zeigt sofort, mit welchem Tag Sie arbeiten.
Probier es selbst
#include <stdio.h>
// TODO: Definieren Sie hier das TaskStatus-Enum
int main() {
// Eingabe für drei Aufgabenstatus lesen
int status1, status2, status3;
scanf("%d", &status1);
scanf("%d", &status2);
scanf("%d", &status3);
// TODO: Deklarieren Sie drei enum TaskStatus-Variablen (task1, task2, task3)
// TODO: Enum-Werte basierend auf der Eingabe zuweisen
// TODO: Aufgabenstatus ausgeben
// TODO: Aufgaben in jeder Kategorie zählen
// TODO: Anzahl der aktiven Aufgaben berechnen und ausgeben
return 0;
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logic & Flow
1Zeiger-Grundlagen
Was ist ein Zeiger?Zeiger deklarierenDer Adressoperator (&)Der Dereferenzierungsoperator (*)NULL-ZeigerZusammenfassung: Zeiger-Grundlagen4Projekt: Einfaches Text-Tool
ProjektübersichtZeichen zählen7Strukturen (structs)
Was ist ein Struct?Deklarieren eines StructsErstellen von Struct-VariablenZugriff auf Struct-MemberInitialisieren von StructsZusammenfassung: Studentendaten-Struct10Enums und typedef
enum für benannte KonstantenEnums deklarieren und verwendenEnums in Switch-Anweisungentypedef für Typ-Aliase verwendentypedef mit StructsWiederholung: Übung zu typedef & Enums2Pointer und Arrays
Array-Namen als PointerArray-Elemente - PointerPointer-ArithmetikPointer vergleichenWiederholung: Array-Durchlauf mit Pointern5Zeiger und Funktionen
Wertübergabe (Pass-by-Value)Zeiger an Funktionen übergebenVariablen über Zeiger ändernEin klassisches Beispiel: SwapArrays an Funktionen übergebenZusammenfassung: Zeiger als Funktionsargumente8Structs und Zeiger
Zeiger auf StructsDer Pfeiloperator (->)Structs per Wert übergebenÜbergabe von Struct-ZeigernDynamische Allokation von StructsZusammenfassung: Struct ändern - Ptr11Finale Wiederholungsaufgaben
Wiederholung: Dynamische String-KonkatenationWiederholung: Array von StructsWiederholung: Wortfrequenz-Zähler3Character-Arrays und Strings
Strings als char-ArraysDer Null-TerminatorString-Eingabe mit scanfVerwendung von strlen()Verwendung von strcpy()Verwendung von strcat()Verwendung von strcmp()Zusammenfassung: Grundlegende String-Funktionen