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 :

Problème sur un test sur variable de type enum


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 33
    Points : 27
    Points
    27
    Par défaut Problème sur un test sur variable de type enum
    Bonjour,

    Je suis habituellement développeur JAVa mais j'ai actuellement un petit développement en C à faire (le pied quoi )

    Je rencontre actuellement un problème sous LINUX au niveau d'une boucle for et une variable type qui est un enum defini ainsi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    typedef enum { 
      INDEFINI = 0,   
      SUITE = 1,      
      COURBE = 2,   
      RESEAU = 3,       
    } TypeCourbe;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int i;
     
    for (i=0; i<type-2; i++)
    {
    ....
    }
    Lorsque ma variable type est initialisée à SUITE (=1), je rentre quand même dans ma boucle for, soit un joli 0<-1 vérifié.

    De quoi cela peut il venir?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Je n'utilise jamais les énumérations, mais chez moi, cela me provoque cet avertissement :
    warning: comparison between signed and unsigned
    ... ce qui veut dire que mon compilateur considère les énumérations comme ayant un type non signé.

    Et fait quelques milliards.

    Au pire, tu peux caster :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (i=0 ; i<(signed int)type-2 ; i++)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 33
    Points : 27
    Points
    27
    Par défaut
    En castant avec un int, ca fonctionne effectivement, mais est ce une manière de faire propre?

    Si non, comment faire?
    utiliser une variable intermediare de type int?

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    On peut forcer l'enum à être signée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    typedef enum {
      DUMMY = -1, 
      INDEFINI = 0,   
      SUITE = 1,      
      COURBE = 2,   
      RESEAU = 3,       
    } TypeCourbe;

Discussions similaires

  1. Segmentation fault sur un test "if (!variable)"
    Par Rakken dans le forum Débuter
    Réponses: 4
    Dernier message: 21/11/2013, 14h17
  2. [XL-2007] petit test sur dates alimentées par variable tableau
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/02/2012, 11h21
  3. [Batch] test sur les valeurs des variable d'environnement
    Par ArnSpin dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 03/09/2010, 15h15
  4. Test si variable de type %rowtype est vide
    Par metalcoyote dans le forum PL/SQL
    Réponses: 9
    Dernier message: 30/07/2008, 18h11
  5. Réponses: 1
    Dernier message: 21/12/2005, 19h08

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