Compartilhar via


C declarações de enumeração

Uma enumeração consiste em um conjunto de constantes nomeadas inteiro.Uma declaração de tipo de enumeração dá o nome da marca (opcional) de enumeração e define o conjunto de identificadores de inteiro nomeado (chamado de "enumeração conjunto," "constantes de enumerador", "enumeradores" ou "membros").Uma variável com tipo de enumeração armazena um dos valores do conjunto de enumeração definida por esse tipo.

Variáveis de enum tipo pode ser usado em expressões de indexação e como operandos de todos os operadores aritméticos e relacionais.Enumerações fornecem uma alternativa para o #define diretiva de pré-processamento com as vantagens que os valores podem ser gerados para você e obedecem as regras de escopo normais.

Em ANSI C, as expressões que definem o valor de uma constante de enumerador sempre tem int digite; Assim, o armazenamento associado a uma variável de enumeração é o armazenamento necessário para um único int valor.Uma constante de enumeração ou um valor de tipo enumerado pode ser usado em qualquer lugar da linguagem c permite que uma expressão de inteiro.

Sintaxe

  • especificador de enum:
    enum identifier opt**{** enumerator-list }

    Enum identificador

Opcional identificador nomeia o tipo de enumeração definido pela lista de enumerador.Esse identificador é normalmente chamado de "marca" da enumeração especificada pela lista.Um especificador de tipo do formulário

enum identifier { enumerator-list }

declara identificador para ser a marca da enumeração especificada pelo lista de enumerador nonterminal.O lista de enumerador define o "conteúdo do enumerador". O lista de enumerador é descrito em detalhes a seguir.

Se a declaração de uma marca é visíveis, subseqüentes declarações que usam a marca mas omitir lista de enumerador especificar o tipo enumerado declarado anteriormente.A marca deve se referir a um tipo de enumeração definidos e que tipo de enumeração deve estar no escopo atual.Desde que o tipo de enumeração é definido em outro lugar, o lista de enumerador não aparecer nessa declaração.Declarações de tipos derivados de enumerações e typedef declarações de tipos de enumeração podem usar a marca de enumeração antes do tipo de enumeração é definido.

Sintaxe

  • lista de enumerador:
    enumerador

    lista de enumerador**,**enumerator

  • enumerator:
    constante de enumeração

    constante de enumeração = expressão de constante

  • constante de enumeração:
    identifier

Cada constante de enumeração em um lista de enumeração um valor do conjunto de enumeração de nomes.Por padrão, o primeiro constante de enumeração está associado com o valor 0.O próximo constante de enumeração na lista está associado com o valor de ( expressão de constante + 1), a menos que você explicitamente associá-lo com outro valor.O nome de um constante de enumeração é equivalente a seu valor.

Você pode usar constante de enumeração = expressão de constante para substituir a seqüência de padrão de valores.Assim, se constante de enumeração = expressão de constante aparece no lista de enumerador, o constante de enumeração está associada com o valor fornecido por expressão de constante.O expressão de constante deve ter int digite e pode ser negativo.

As seguintes regras se aplicam aos membros de um conjunto de enumeração:

  • Um conjunto de enumeração pode conter valores duplicados de constantes.Por exemplo, você pode associar o valor 0 com dois identificadores diferentes, talvez denominado null e zero, no mesmo conjunto.

  • Os identificadores na lista de enumeração devem ser diferentes de outros identificadores no mesmo escopo com a mesma visibilidade, incluindo nomes de variáveis comuns e identificadores em outras listas de enumeração.

  • Marcas de enumeração obedecem as regras de escopo normais.Eles devem ser diferentes de outros enumeração, estrutura e as marcas de união com a mesma visibilidade.

Exemplos

Estes exemplos ilustram as declarações de enumeração:

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;

O valor 0 está associado saturday por padrão.O identificador sunday seja explicitamente definido como 0.Os identificadores restantes recebem os valores de 1 a 5 por padrão.

Neste exemplo, um valor do conjunto de DAY é atribuído à variável today.

enum DAY today = wednesday;

Observe que o nome da constante de enumeração é usado para atribuir o valor.Desde que o DAY tipo de enumeração tenha sido declarada previamente, somente a marca de enumeração DAY é necessário.

Para atribuir explicitamente um valor inteiro a uma variável de um tipo de dados enumerado, use uma conversão de tipo:

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

Essa conversão é recomendada em C, mas não é necessário.

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

Essa declaração também pode ser especificada como

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

ou como

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

Um exemplo que usa essas variáveis pode parecer com isso:

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

Tipos de dados sem nome de enumerador também podem ser declarados.O nome do tipo de dados for omitido, mas as variáveis podem ser declaradas.A variável response é uma variável do tipo definido:

enum { yes, no } response;

Consulte também

Referência

Declarações de enumeração de C++