IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

type énuméré en c


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 20
    Par défaut type énuméré en c
    bonjour à tous,

    bon, je suis en plein apprentissage du C.

    une question,
    Pourquoi utiliser les enums ?
    si j'ai bien compris
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    enum toto {
           Titi   = 0x01,
           Tutu = 0x02,
    };
    veut dire toto est un nom symbolique qui a pour valeur Titi ou Tutu ?
    et comment les utiliser?

    Merci de votre aide

  2. #2
    Membre chevronné Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Par défaut
    Un type énuméré sert à définir un type, tel que les variables de ce type puissent prendre un nombre fini de valeurs.
    Exp:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    enum Etat {actif, activable, bloque, zombie, mort};
    Là, en déclarant une variable MonEtat de type Etat, celle-ci peut prendre l'une des 5 valeurs décrites dans la définition du type Etat.
    Après tu peux faire des manipulations avec (des tests ....) genre
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    if (MonEtat == actif){.....};

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Seimaya Voir le message
    une question,
    Pourquoi utiliser les enums ?
    L'usage des enum est essentiellement documentaire. On en prend conscience quand on écrit de gros programmes où les données ont un sens réel. Tant qu'on reste dans les exercices, on est dans l'abstraction, et on du mal à voir à quoi ça sert.

    Exemple : Un bit qui commande une vanne peut prendre 2 valeurs : 0 ou 1. Mais leur sens applicatif est 0 = VANNE OUVERTE
    1= VANNE FERME

    On va donc définir un enum :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    enum vanne
    {
       VANNE_OUVERTE = 0,
       VANNE_FERMEE = 1,
       VANNE_dummy /* pas de ',' sur le dernier, facilite la maintenance... */
    };
    Maintenant, on ajoute un dispositif de régulation de la vanne. Il y a donc un état 'régulé'. Il faut un bit de plus, et on a donc, par exemple :

    00 = OUVERTE
    01 = FERMEE
    10 = REGULEE
    11 = interdit

    Ce qui se code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    enum vanne
    {
       VANNE_OUVERTE = 0,
       VANNE_FERMEE = 1,
       VANNE_REGULEE = 2,
       VANNE_INTERDITE = 3,
       VANNE_dummy
    };
    etc.

    En attendant, c'est pratique pour créer automatiquement des codes d'erreurs tous différents et leur donner un nom significatif...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    enum err
    {
       OK,
       ERR_MEMOIRE,
       ERR_FICHIER,
       ERR_LECTURE,
       ERR_FORMAT,
       ERR_dummy
    };
    etc.

    Des exemples ici :http://emmanuel-delahaye.developpez.com/clib.htm

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 20
    Par défaut
    je comprend mieux. Merci bcp.

    pour prendre des bonnes habitudes je vais l'utiliser cet enum.
    je vais ptet dire une grosse bêtise mais c'est un peu comme un switch qui une variable peut prendre plusieurs cas , hein ?

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Seimaya Voir le message
    je vais ptet dire une grosse bêtise mais c'est un peu comme un switch qui une variable peut prendre plusieurs cas
    C'est une peu une bêtise, mais il y a quand même un rapport. En effet, il est courant d'utiliser une variable 'enum' dans un switch.

    D'ailleurs, le compilateur (gcc, si il est bien réglé) en profite pour vérifier que tous les cas (valeurs possibles de l'énum) ont bien été traités... (sinon, on s'en sort avec un 'default:' pour 'traiter' les cas ignorés...). Rien n'est laissé "en l'air"...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 20
    Par défaut
    super Merci
    j'ai d'autres questions mais sur des pointeurs de structures.... dois je créer un autre topic?

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Seimaya Voir le message
    super Merci
    j'ai d'autres questions mais sur des pointeurs de structures.... dois je créer un autre topic?
    Oui. Le principe, c'est un topic par question.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Questions sur les types énumérés
    Par Premium dans le forum Langage
    Réponses: 5
    Dernier message: 12/11/2006, 18h00
  2. [c# 2.0][DEBUTANT] type énuméré
    Par dsr57 dans le forum C#
    Réponses: 2
    Dernier message: 13/10/2006, 16h03
  3. [D2005] Utilisation des types énumérés
    Par bouha dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 21/07/2005, 22h21
  4. Réponses: 7
    Dernier message: 02/06/2003, 08h38
  5. Transformer un caractère en type énuméré
    Par HT dans le forum Langage
    Réponses: 3
    Dernier message: 22/10/2002, 20h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo