Sdílet prostřednictvím


C prohlášení výčtu

Výčet obsahuje sadu konstant pojmenované celé číslo.Typ deklarace výčtu poskytuje název výčtu (volitelně) značky a definuje sadu identifikátorů pojmenované celé číslo (nazývá "výčet sada," "konstanty výčtu," "výčtu" nebo "členové").Proměnná s typ výčtu ukládá jedna z hodnot výčtu sadu podle typu.

Proměnné enum typ lze použít ve výrazech indexování a jako operandy všechny aritmetická a relační operátory.Vyčíslení alternativu k #define direktivu preprocesoru přináší výhody, že hodnoty mohou být generovány automaticky a řídila běžných pravidel oboru.

V ANSI C výrazy, které definují hodnotu konstanty výčtu vždy mít int zadejte; úložiště přidruženého proměnné výčtu tedy úložiště pro jeden int hodnotu.Výčet konstantu nebo hodnoty výčtového typu lze použít kdekoli umožňuje jazyka c výraz celé číslo.

Syntaxe

  • Specifikátor výčtu:
    enum identifier opt**{** enumerator-list }

    výčet identifikátor

Nepovinný identifikátor typ výčtu definované názvy seznamu čítače výčtu.Tento identifikátor se často nazývá "značka" výčet určeným v seznamu.Specifikátor typu formuláře

enum identifier { enumerator-list }

deklaruje identifikátor být značka výčtu určený seznamu čítače výčtu nonterminal.Seznamu čítače výčtu definuje "obsah enumerator." Seznamu čítače výčtu je podrobně níže.

Prohlášení o značku je viditelné, následné prohlášení, které používají tag, ale vynecháte-li seznamu čítače výčtu určit dříve deklarovaný typ výčtu.Značka musí odkazovat na typ definovaný výčet a výčtu typu musí být v aktuálním oboru.Protože je jinde, definován typ výčtu seznamu čítače výčtu nezobrazí v tomto prohlášení.Prohlášení typy odvozené z výčtů a typedef prohlášení pro výčet typů lze použít značku výčtu, než je definován typ výčtu.

Syntaxe

  • Čítač výčtu seznam:
    Čítač výčtu

    Čítač výčtu seznam**,**enumerator

  • enumerator:
    konstanty výčtu

    konstanty výčtu = konstantní výraz

  • konstanty výčtu:
    identifikátor

Každý konstanty výčtu v výčet seznamu hodnotu výčtu sadu názvů.Standardně první konstanty výčtu je spojen s hodnotou 0.Další konstanty výčtu v seznamu je spojen s hodnotou ( konstantní výraz + 1), pokud není výslovně spojit s jinou hodnotu.Název konstanty výčtu je jeho hodnota.

Můžete použít konstanty výčtu = konstantní výraz potlačit výchozí pořadí hodnot.Proto pokud konstanty výčtu = konstantní výraz se zobrazí v seznamu čítače výčtu, konstanty výčtu je spojen s hodnota podle konstantní výraz.Konstantní výraz musí mít int zadejte a může být záporná.

Členy sady výčet platí následující pravidla:

  • Do výčtu sada může obsahovat duplicitní hodnoty konstantní.Nelze například přiřadit hodnotu 0 s dvěma různými identifikátory, případně s názvem null a zero, v jedné sadě.

  • Identifikátory v seznamu výčtu musí být odlišný od jiných identifikátorů ve stejném oboru s stejné viditelnost, včetně běžných názvů proměnných a identifikátory v jiných seznamech výčtu.

  • Výčet značek dodržovat běžných pravidel oboru.Musí být oddělen od ostatních výčtu, strukturu a unie tagy s stejné viditelnost.

Příklady

Tyto příklady ilustrují deklarace výčtu:

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;

Hodnota 0 je spojeno s saturday ve výchozím nastavení.Identifikátor sunday explicitně nastavena na 0.Zbývající identifikátory jsou standardně uvedeny hodnoty 1 až 5.

V tomto příkladu hodnota ze sady DAY je přiřazen proměnné today.

enum DAY today = wednesday;

Všimněte si, že název konstanty výčtu slouží k přiřazení hodnoty.Protože DAY typ výčtu byla dříve deklarována, pouze výčet značka DAY je nezbytné.

Proměnné typu Výčtový datový přiřadit explicitně celočíselnou hodnotu, použijte typ cast:

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

Tato cast je doporučeno v C, ale není požadován.

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 */

Toto prohlášení může být také určen jako

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

nebo jako

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

Příklad, který používá tyto proměnné může vypadat například takto:

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

Čítač výčtu nepojmenované datové typy rovněž prohlášen.Je vynechán název typu dat, ale lze deklarovat proměnné.Proměnná response je proměnná typu definovaného:

enum { yes, no } response;

Viz také

Referenční dokumentace

Deklarace výčtu C++