Type enum !!

newram66 Messages postés 10 Statut Membre -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
salut
je fait l'etude d'un code source pour une puce.
j'ai la structure suivante
typedef enum {
Size1,
Size2
} Size_enum ;

le probleme est qu'il y a apres l instruction suivante
tab[Size1] = (unsigned short)(a);
(avec
char* tab
et
WORD val
)
est ce que je peux savoir exactement l'indice de la case où val a a été stocké ?
est ce que quelqu'un peut m'aider
merci d'avance

2 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,
    Je n'ai pas tout compris.
    Pourriez-vous être plus précis.
    Notamment, "val" intervient où dans votre programme ?
    De plus : char *tab ne suffit pas à allouer une zone. Encore faut-il l'allouer.
    0
    1. newram66 Messages postés 10 Statut Membre
       
      bjr
      oui en fait j'ai mal posé le probleme
      voila je le repose :
      char* tab[100];
      WORD val;
      val = 12; ( ou n'importe quelle valeur )
      tab[Size1] = (unsigned short)(val);

      en fait mon probleme est que je veux savoir l'indice où val est stocké pour savoir precisement la structure de la trame. (parce que tab est en fait un tableau qui sera envoyé par l'uart).
      0
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Ben ça dépend de ce que vaut Size1. Si Size1 vaut 5 alors val sera stockée à l'indice 6 dans le tableau.
      Ou alors j'ai toujours pas compris ta question...
      0
    3. newram66 Messages postés 10 Statut Membre
       
      justement c ça le probleme.
      il n y a aucune instruction d'initialisation initialisant la valeur size1 ni size2.
      la question est en fait, dans le cas general quelle est la valeur affectée à une enumeration non intialisée ??
      0
    4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Ah ok, j'avais mal compris.
      Size1 vaudra 0 et Size2 vaudra 1 puisqu'ils sont dans un enum.
      0
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    Par défaut les énumération commencent à zéro et incrémente de 1 à chaque variable ajoutée.
    Donc Size1==0, Size2==1.
    Mais il est aussi possible de forcer les valeurs.
    enum test{val=0,mal=2,sal=4,gal,bal=8};
    dans ce cas, gal==5.
    Je ne sais plus si on peut donner des valeurs négatives, mais je crois que non.
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      mais je crois que non.
      Perdu. T'avais une chance sur deux ^^. Il est possible de donner des valeurs négatives.
      0
    2. newram66 Messages postés 10 Statut Membre
       
      ah d'accord je vois.
      g posé la question car je peux pas faire un printf(size1) car j'ai pas le debugger
      merci pour vous tous
      0
    3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Certes. Mais tu pouvais aussi mettre printf("%d",Size1); dans un programme séparé. ;-)))
      0
    4. newram66 Messages postés 10 Statut Membre
       
      @ fiddy : le probleme que j'ai pas le debuger :))
      merci a vous tous :))
      0
    5. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      A newram66
      @ fiddy : le probleme que j'ai pas le debuger :))
      Non, mais tu as une machine, t'as un compilateur. Tu peux te refaire le programme et te mettre en clair : printf("%d",Size1). Ton programme affichera à l'écran la valeur de Size1, et sans débugger... ;-)
      0