Déclarations d'énumération C
Une énumération se compose d'un jeu de constantes entières désignées.Une déclaration de type énumération indique le nom de l'indicateur (facultatif) d'énumération et définit l'ensemble des identificateurs d'entiers nommés (appelés « ensemble d'énumération, » de « constantes d'énumérateur », des énumérateurs « , » ou « membre »).Une variable du type énumération enregistre une des valeurs de l'énumération la valeur définie par ce type.
Les variables de type d' enum peuvent être utilisées dans des expressions d'indexation et comme opérandes de tous les opérateurs arithmétiques et de relations.Les énumérations offrent une alternative à la directive de préprocesseur d' #define avec les avantages que les valeurs peuvent être générées pour vous et se conformer aux règles normales de portée.
En C ANSI, les expressions qui définissent la valeur d'une constante d'énumérateur ont toujours le type d' int ; par conséquent, le stockage associé à une variable d'énumération est le stockage requis pour une valeur unique d' int .Constante d'énumération ou une valeur de type énuméré peut être utilisée n'importe où les autorise également en langage C une expression globale.
Syntaxe
enum-spécificateur:
énumérateur-liste }optde{ d'identificateur d' enum*identificateur d'*enum
l'identificateur facultatif nomme le type énumération défini par l'énumérateur- liste.Cet identificateur est souvent appelée « balise » de l'énumération spécifiée par la liste.un spécificateur de type du formulaire
enum identifier { enumerator-list }
déclare l' identificateur pour être la balise de l'énumération spécifiée par l'énumérateur- liste non terminal.L'énumérateur-liste définit le rendu du contenu de l'énumérateur. » l'énumérateur-liste est décrite en détail ci-dessous.
Si la déclaration d'une balise est visible, les déclarations suivantes qui utilisent la balise mais laissez l'énumérateur-liste spécifient le type énuméré déclaré précédemment.La balise doit faire référence à un type énumération définie, et ce type énumération doit se trouver dans la portée actuelle.Étant donné que le type énumération est défini ailleurs, l'énumérateur-liste ne s'affiche pas dans cette déclaration.Les déclarations des types dérivés des énumérations et les déclarations d' typedef pour les types énumération peuvent utiliser la balise d'énumération avant que le type énumération soit défini.
Syntaxe
énumérateur-liste:
énumérateurénumérateur-listeServeur IIS local enumerator
enumerator:
énumération-constanteexpression constante de**=** d'énumération-constante
énumération-constante:
identifier
chaque énumération- constante dans une énumération- liste nomme une valeur de l'ensemble d'énumération.Par défaut, la première énumération-constante est associée à la valeur 0.L'énumération-constante suivante de la liste est associée à la valeur (expression constante + 1), à moins que vous l'associer explicitement avec une autre valeur.Le nom d'une énumération-constante équivaut à sa valeur.
vous pouvez utiliser l'énumération- constante = l'expression constante pour substituer la séquence par défaut de valeurs.Ainsi, si l'énumération-constante = l'expression constante apparaît dans l'énumérateur-liste, l'énumération-constante est associée à la valeur indiquée par expression constante.l'expression constante doit avoir le type d' int et peut être négative.
Les règles suivantes s'appliquent aux membres d'une énumération définie :
Un ensemble d'énumération peuvent contenir des valeurs constantes en double.Par exemple, vous pouvez associer la valeur 0 avec deux identificateurs différents, peut-être nommé null et zero, dans le même ensemble.
Les identificateurs dans la liste d'énumération doivent être distincts d'autres identificateurs dans la même portée avec la même visibilité, y compris les noms de variables ordinaires et les identificateurs d'autres listes d'énumération.
Les indicateurs d'énumération sont conformes aux directives normales de portée.Ils doivent être distincts d'autres énumération, structure, les balises et des unions avec la même visibilité.
Exemples
Ces exemples montrent les déclarations d'énumération :
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;
La valeur 0 à saturday par défaut.L'identificateur sunday est défini explicitement à 0.Les identificateurs restants sont fournis des valeurs de 1 à 5 par défaut.
dans cet exemple, une valeur d' DAY défini est assignée à todayvariable.
enum DAY today = wednesday;
notez que le nom de la constante d'énumération est utilisé pour assigner la valeur.Comme ce type énumération d' DAY a été déclaré précédemment, seule la balise DAY d'énumération est nécessaire.
Pour assigner explicitement une valeur entière à une variable d'un type de données énuméré, utilisez un cast de type :
workday = ( enum DAY ) ( day_value - 1 );
Ce cast est recommandé dans C mais n'est pas obligatoire.
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 */
Cette déclaration peut également être spécifiée comme
enum BOOLEAN { false, true } end_flag, match_flag;\
ou comme
enum BOOLEAN { false, true } end_flag;
enum BOOLEAN match_flag;
Un exemple qui utilise ces variables peut se présenter comme suit :
if ( match_flag == false )
{
.
. /* statement */
.
}
end_flag = true;
Les types de données sans nom d'énumérateur peuvent également être déclarés.Le nom du type de données est omis, mais les variables peuvent être déclarées.response variable est une variable du type défini :
enum { yes, no } response;