Freigeben über


C-Enumerations-Deklarationen

Eine Enumeration besteht aus einem Satz von benannten ganzzahligen Konstanten.Eine Deklaration gibt den Namen des Enumerationstyps (optionalen) und tages Enumeration definiert den Satz der benannten ganzzahligen Bezeichner (so genannte „Enumeration“, „Enumerator festgelegte konstanten“, „Enumeratoren“ oder „Member“).Eine Variable mit Enumerationstyp speichert einen der Werte des festgelegten Enumeration durch diesen Typ definiert ist.

Variablen von enum-Typ können in Indizierungs ausdrücken und als Operanden aller arithmetische und relationale Operatoren verwendet werden.Enumerationen stellen eine Alternative zu den Vorteilen mit Präprozessordirektiven #define , dass die Werte für Sie generiert und Normal befolgen können Regeln ausgewertet.

Bei ANSI C verfügen über Ausdrücke, die den Wert einer Enumerator konstante definieren, immer int-Typ. Daher ist der Speicher, der eine Enumerationsvariable zugeordnete Speicher, der für einen einzelnen int-Wert erforderlich ist.Einer Enumerationskonstante oder ein Wert des Enumerationstyps können eine beliebige Stelle der Programmiersprache C kann einen ganzzahligen Ausdruck.

Syntax

  • Enumeration Bezeichner:
    Enumeration Bezeichneropt**{** EnumeratorListe }

    Enumeration Bezeichner

Die optionalen Bezeichner , die den Enumerationstyp definierten Listevon Enumerator.Dieser Bezeichner wird häufig das „Tag“ der Enumeration aufgerufen, die von der Liste angegeben wird.Ein Typspezifizierer des Formulars

enum identifier { enumerator-list }

Bezeichner deklariert, um das Tag der Enumeration zu sein, die von der Enumerator Liste Nicht-Terminal angegeben wird.Die Enumerator Liste definiert den Inhalt der Enumerator „.“ Die Enumerator Liste wird ausführlich im Folgenden beschrieben.

Wenn die Deklaration eines Tags angezeigt wird, folgende Deklaration, die das Tag, können jedoch angeben den zuvor deklarierten Liste Enumerator Aufzählungstyp weglassen.Das Tag muss über einen definierten Enumerationstyp verweisen, und dieser Enumerationstyp muss im aktuellen Bereich sein.Da der Enumerationstyp an einer anderen Stelle definiert ist, wird der Enumerator Liste nicht in dieser Deklaration.Deklarationen von Typen, die von Enumerationen und typedef Deklarationen für Enumerationstypen abgeleitet werden, können die Enumeration tag verwenden, bevor der Enumerationstyp definiert ist.

Syntax

  • EnumeratorListe:
    Enumerator

    und Liste Enumeratorenumerator

  • enumerator:
    EnumerationKonstante

    EnumerationKonstante = konstanter Ausdruck

  • Enumeration Konstanten:
    identifier

Jede Enumeration Konstanten in einer Enumeration Liste Namen der Wert des festgelegten Enumeration.Standardmäßig wird die erste Enumeration Konstante mit dem Wert 0 zugeordnet.Die folgende Enumeration Konstante in der Liste wird mit dem Wert zugeordnet (konstanter Ausdruck + 1), sofern Sie es nicht explizit mit einem anderen Wert zuordnen.Der Name einer Enumeration Konstante ist auf den Wert entsprechend.

Sie können die Enumeration Konstante = konstanten Ausdruck verwenden, um die standardmäßige Wertesequenz zu überschreiben.Wenn Enumeration Konstante = konstanter Ausdruck in dieser Listeenthalten ist, wird die Enumeration Konstante mit dem Wert zugeordnet, der von konstanten Ausdruckangegeben ist.Der konstante Ausdruck muss int-Typ enthalten und kann negativ sein.

Die folgenden Regeln gelten für die Member einer Enumeration festlegen:

  • Eine Enumeration von kann doppelte konstante Werte enthalten.Sie können beispielsweise den Wert 0 (null) zuordnen, Bezeichnern mit zwei unterschiedlichen null im gleichen Satz, und zerokann.

  • Die Bezeichner in der Liste Enumeration müssen von anderen Bezeichnern innerhalb des gleichen Bereichs mit derselben Sichtbarkeit, einschließlich gewöhnliche Variablennamen und Bezeichner in anderen Enumeration listet unterscheiden.

  • enum Tage befolgen Normal, der Regeln ausgewertet.Sie müssen von einer anderen Enumeration, Struktur und Unions tagen mit derselben Sichtbarkeit unterscheiden.

Beispiele

Diese Beispiele veranschaulichen Enumeration Deklarationen:

enum DAY            /* Defines an enumeration type    */
{
    saturday,       /* Names day and declares a       */
    sunday = 0,     /* variable named workday with    */ 
    monday,         /* that type                      */
    tuesday,
    wednesday,      /* wednesday is associated with 3 */
    thursday,
    friday
} workday;

Der Wert 0 wird mit saturday standardmäßig zugeordnet.Der Bezeichner sunday wird explizit auf 0 festgelegt.Die übrigen Bezeichner sind die Werte 1 und 5 standardmäßig angegeben.

In diesem Beispiel wird ein todayvariablen Wert aus dem Satz DAY zugewiesen.

enum DAY today = wednesday;

Beachten Sie, dass der Name der Enumerationskonstante verwendet wird, um den Wert zuzuweisen.Da der DAY-Enumerationstyp zuvor deklariert wurde, nur die Enumeration tag DAY erforderlich ist.

Um einen ganzzahligen Wert einer Variablen eines aufgelisteten Datentyps explizit zuweisen möchten, verwenden Sie eine Typumwandlung:

workday = ( enum DAY ) ( day_value - 1 );

Dieses, das umgewandelt wird, wird empfohlen, ist aber in C nicht erforderlich.

enum BOOLEAN  /* Declares an enumeration data type called BOOLEAN */
{
    false,     /* false = 0, true = 1 */
    true 
}; 

enum BOOLEAN end_flag, match_flag; /* Two variables of type BOOLEAN */

Durch diese Deklaration kann z. B. ebenfalls angegeben werden

enum BOOLEAN { false, true } end_flag, match_flag;\

oder z. B.

enum BOOLEAN { false, true } end_flag;
enum BOOLEAN match_flag;

Ein Beispiel, in dem diese Variablen verwendet, könnte folgendermaßen aussehen:

if ( match_flag == false )
    {
     .
     .   /* statement */ 
     .
    }
    end_flag = true;

Unbenannte Enumerator Datentypen können auch deklariert werden.Der Name des Datentyps wird ausgelassen, aber Variablen können deklariert werden.Variable response ist eine Variable des definierten Typs:

enum { yes, no } response;

Siehe auch

Referenz

C++-Enumerations-Deklarationen