C-Programmierung

So verwenden Sie enum in der C-Sprache

So verwenden Sie enum in der C-Sprache
Das enum-Programm in der Programmiersprache C wird verwendet, um ganzzahlige Konstantenwerte zu definieren, was beim Schreiben sauberer und lesbarer Programme sehr hilfreich ist writing. Programmierer verwenden normalerweise Enumeration, um benannte ganzzahlige Konstanten in ihren Programmen zu definieren, um eine bessere Lesbarkeit und Wartbarkeit der Software zu gewährleisten. Dieser Artikel wird enum im Detail besprechen.

Syntax

aufzählen
Enumeration_Constant_Element-1,
Enumeration_Constant_Element-2,
Enumeration_Constant_Element-3,
… ,
Enumeration_Constant_Element-n,
;

Der Standardwert von Enumeration_Constant_Element-1 ist 0, der Wert von Enumeration_Constant_Element-2 ist 1, der Wert von Enumeration_Constant_Element-3 ist 2 und der Wert von Enumeration_Constant_Element-n ist (n-1).

Tauchen Sie ein in Enum

Da wir nun die Syntax zum Definieren des Aufzählungstyps kennen, sehen wir uns ein Beispiel an:

Aufzählungsfehler
IO_ERROR,
FESTPLATTENFEHLER,
NETZWERKFEHLER
;

Das Schlüsselwort „enum“ muss immer verwendet werden, um den Aufzählungstyp zu definieren. Wenn Sie also einen Aufzählungstyp definieren möchten, müssen Sie vorher das Schlüsselwort „enum“ verwenden . Nach dem Schlüsselwort „enum“ müssen Sie einen gültigen Bezeichner verwenden, um das . zu definieren .

Im obigen Beispiel weist der Compiler IO_ERROR dem Integralwert zu: 0, DISK_ERROR dem Integralwert: 1 und NETWORK_ERROR dem Integralwert: 2.  Standardmäßig wird dem ersten Aufzählungselement immer der Wert 0 zugewiesen, dem nächsten Aufzählungselement der Wert 1 usw. and.

Dieses Standardverhalten kann bei Bedarf durch explizite Zuweisung des konstanten Integralwertes wie folgt geändert werden:

Aufzählungsfehler
IO_ERROR = 2,
FESTPLATTENFEHLER,
NETZWERK_FEHLER = 8 ,
PRINT_ERROR
;

In diesem Fall wird IO_ERROR vom Programmierer explizit dem Wert 2 zugewiesen, DISK_ERROR wird vom Compiler dem Wert 3 zugewiesen, NETWORK_ERROR wird vom Programmierer explizit dem Wert 8 zugewiesen und PRINT_ERROR wird dem nächsten zugewiesen ganzzahliger Wert des vorherigen Enum-Elements NETWORK_ERROR (i.e., 9) vom Compiler.

Sie wissen jetzt also, wie Sie einen benutzerdefinierten Aufzählungstyp in C . definieren. Ist es möglich, eine Variable vom Typ Enum zu deklarieren (wie wir eine Variable vom Typ Integer deklarieren können)?  Ja, so ist es! Sie können die Enum-Variable wie folgt deklarieren:

Aufzählungsfehler Hw_Error;

Auch hier ist „enum“ das Schlüsselwort, „Error“ ist der Enum-Typ und „Hw_Error“ ist eine Enum-Variable.

Wir werden uns nun die folgenden Beispiele ansehen, um die verschiedenen Verwendungen von enum zu verstehen:

  • Beispiel 1: Verwendung der Standard-Enum-Definition
  • Beispiel 2: Verwendung einer benutzerdefinierten Aufzählungsdefinition
  • Beispiel 3: Aufzählungsdefinition mit konstantem Ausdruck
  • Beispiel 4: Aufzählungsbereich

Beispiel 1: Verwendung der Standard-Enum-Definition

In diesem Beispiel erfahren Sie, wie Sie den Aufzählungstyp mit Standardkonstantenwerten definieren. Der Compiler übernimmt die Zuweisung der Standardwerte an die Enum-Elemente. Unten sehen Sie das Beispielprogramm und die entsprechende Ausgabe.

#einschließen
/* Definiere den Aufzählungstyp */
Aufzählungsfehler
IO_ERROR,
FESTPLATTENFEHLER,
NETZWERKFEHLER
;
int main()

Aufzählungsfehler Hw_Error; /* Enum-Variable erstellen*/
printf("Hw_Error auf IO_ERROR setzen\n");
Hw_Error = IO_ERROR;
printf("Wert von Hw_Error = %d \n",Hw_Error);
printf("\nHw_Error auf DISK_ERROR setzen\n");
Hw_Error = DISK_ERROR;
printf("Wert von Hw_Error = %d \n",Hw_Error);
printf("\nHw_Error auf NETWORK_ERROR setzen\n");
Hw_Error = NETWORK_ERROR;
printf("Wert von Hw_Error = %d \n",Hw_Error);
0 zurückgeben;

Beispiel 2: Verwendung einer benutzerdefinierten Aufzählungsdefinition

In diesem Beispiel erfahren Sie, wie Sie den Aufzählungstyp mit einem benutzerdefinierten konstanten Wert definieren. Dieses Beispiel hilft Ihnen auch zu verstehen, wie die Initialisierung der benutzerdefinierten Konstanten in beliebiger Reihenfolge erfolgen kann. In diesem Beispiel haben wir den konstanten Wert für die 1 . explizit definiertst und 3rd Aufzählungselemente (i.e., IO_ERROR bzw. NETWORK_ERROR), aber wir haben die explizite Initialisierung für die 2 . übersprungennd und 4das Elemente. Es liegt nun in der Verantwortung des Compilers, den 2 . die Standardwerte zuzuweisennd und 4das Aufzählungselemente (i.e., DISK_ERROR bzw. PRINT_ERROR). DISK_ERROR wird einem Wert von 3 zugewiesen und PRINT_ERROR wird einem Wert von 9 zugewiesen. Unten sehen Sie das Beispielprogramm und die Ausgabe.

#einschließen
/* Aufzählungstyp definieren - Benutzerdefinierte Initialisierung*/
Aufzählungsfehler
IO_ERROR = 2,
FESTPLATTENFEHLER,
NETZWERK_FEHLER = 8,
PRINT_ERROR
;
int main()

/* Enum-Variable deklarieren*/
Aufzählungsfehler Hw_Error;
printf("Hw_Error auf IO_ERROR setzen\n");
Hw_Error = IO_ERROR;
printf("Wert von Hw_Error = %d \n",Hw_Error);
printf("\nHw_Error auf DISK_ERROR setzen\n");
Hw_Error = DISK_ERROR;
printf("Wert von Hw_Error = %d \n",Hw_Error);
printf("\nHw_Error auf NETWORK_ERROR setzen\n");
Hw_Error = NETWORK_ERROR;
printf("Wert von Hw_Error = %d \n",Hw_Error);
printf("\nHw_Error auf PRINT_ERROR setzen\n");
Hw_Error = PRINT_ERROR;
printf("Wert von Hw_Error = %d \n",Hw_Error);
0 zurückgeben;

Beispiel 3: Enum-Definition mit konstantem Ausdruck

In diesem Beispiel erfahren Sie, wie Sie den konstanten Ausdruck verwenden, um den konstanten Wert für Aufzählungselemente zu definieren.

#einschließen
/* Aufzählungstyp definieren - benutzerdefinierte Initialisierung mit konstantem Ausdruck
konstanter Ausdruck wird hier verwendet im Fall von:
ein. IO_ERROR und
b. NETZWERKFEHLER
Dies ist eine ungewöhnliche Art, die Aufzählungselemente zu definieren; aber das
Programm zeigt, dass diese Art der Initialisierung von Aufzählungselementen in c . möglich ist.
*/
Aufzählungsfehler
IO_ERROR = 1 + 2 * 3 + 4,
FESTPLATTENFEHLER,
NETZWERK_FEHLER = 2 == 2,
PRINT_ERROR
;
int main()

/* Enum-Variable deklarieren*/
Aufzählungsfehler Hw_Error;
printf("Hw_Error auf IO_ERROR setzen\n");
Hw_Error = IO_ERROR;
printf("Wert von Hw_Error = %d \n",Hw_Error);
printf("\nHw_Error auf DISK_ERROR setzen\n");
Hw_Error = DISK_ERROR;
printf("Wert von Hw_Error = %d \n",Hw_Error);
printf("\nHw_Error auf NETWORK_ERROR setzen\n");
Hw_Error = NETWORK_ERROR;
printf("Wert von Hw_Error = %d \n",Hw_Error);
printf("\nHw_Error auf PRINT_ERROR setzen\n");
Hw_Error = PRINT_ERROR;
printf("Wert von Hw_Error = %d \n",Hw_Error);
0 zurückgeben;

Beispiel 4: Enum-Bereich

In diesem Beispiel erfahren Sie, wie die Bereichsregel für enum . funktioniert. Ein MACRO (#define) hätte verwendet werden können, um eine Konstante anstelle der Aufzählung zu definieren, aber die Bereichsregel funktioniert nicht für MACRO.

#einschließen
int main()

/* Definiere den Aufzählungstyp */
Aufzählungsfehler_1
IO_ERROR = 10,
FESTPLATTENFEHLER,
NETWORK_ERROR = 3,
PRINT_ERROR
;

/* Definiere den Aufzählungstyp im inneren Gültigkeitsbereich*/
Aufzählungsfehler_1
IO_ERROR = 20,
FESTPLATTENFEHLER,
NETWORK_ERROR = 35,
PRINT_ERROR
;
/* Enum-Variable deklarieren*/
Aufzählung Error_1 Hw_Error;
printf("Hw_Error auf IO_ERROR setzen\n");
Hw_Error = IO_ERROR;
printf("Wert von Hw_Error = %d \n",Hw_Error);
printf("\nHw_Error auf DISK_ERROR setzen\n");
Hw_Error = DISK_ERROR;
printf("Wert von Hw_Error = %d \n",Hw_Error);
printf("\nHw_Error auf NETWORK_ERROR setzen\n");
Hw_Error = NETWORK_ERROR;
printf("Wert von Hw_Error = %d \n",Hw_Error);
printf("\nHw_Error auf PRINT_ERROR setzen\n");
Hw_Error = PRINT_ERROR;
printf("Wert von Hw_Error = %d \n",Hw_Error);

0 zurückgeben;

Vergleich zwischen Enum und Makro

Aufzählung Makro
Bereichsregel gilt für enum. Bereichsregel gilt nicht für Makro.
Die standardmäßige Enum-Wertzuweisung erfolgt automatisch.

Enum ist sehr hilfreich bei der Definition einer großen Anzahl von Konstanten. Der Compiler verwendet die standardmäßige Konstantenwertinitialisierung.

Die Makrokonstantenwerte müssen vom Programmierer immer explizit erwähnt werden.

Dies kann bei einer großen Anzahl von Konstanten ein mühsamer Prozess sein, da der Programmierer beim Definieren des Makros immer jeden Konstantenwert manuell definieren muss.

Fazit

Das Enum-Programm in C könnte als optionale Methode für eigenständige Programme oder kleine Projekte angesehen werden, da Programmierer immer Makros anstelle einer Enum verwenden können. Erfahrene Programmierer neigen jedoch dazu, bei umfangreichen Softwareentwicklungsprojekten Enumerationen vor Makros zu verwenden. Dies hilft beim Schreiben sauberer und lesbarer Programme.

Weisen Sie Ihre Maustasten mit der X-Mouse Button Control für verschiedene Software unterschiedlich zu
Vielleicht benötigen Sie ein Tool, mit dem sich die Steuerung Ihrer Maus bei jeder von Ihnen verwendeten Anwendung ändern kann. In diesem Fall können ...
Microsoft Sculpt Touch Wireless-Maus Bewertung
Ich habe vor kurzem gelesen, dass Microsoft Sculpt Touch kabellose Maus und beschloss, sie zu kaufen. Nachdem ich es eine Weile benutzt hatte, beschlo...
AppyMouse On-Screen Trackpad und Mauszeiger für Windows Tablets
Tablet-Benutzer vermissen oft den Mauszeiger, insbesondere wenn sie die Laptops gewohnt sind. Die Touchscreen-Smartphones und -Tablets bieten viele Vo...