Type enum !!

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. Contributeur
    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.
    1. 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).
    2. Contributeur
      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...
    3. 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 ??
    4. Contributeur
      Ah ok, j'avais mal compris.
      Size1 vaudra 0 et Size2 vaudra 1 puisqu'ils sont dans un enum.
  2. Contributeur
    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.
    1. Contributeur
      mais je crois que non.
      Perdu. T'avais une chance sur deux ^^. Il est possible de donner des valeurs négatives.
    2. 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
    3. Contributeur
      Certes. Mais tu pouvais aussi mettre printf("%d",Size1); dans un programme séparé. ;-)))
    4. @ fiddy : le probleme que j'ai pas le debuger :))
      merci a vous tous :))
    5. Contributeur
      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... ;-)