Type enum !!

newram66 Messages postés 10 Statut Membre -  
fiddy Messages postés 11653 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
A voir également:

2 réponses

fiddy Messages postés 11653 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
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
fiddy Messages postés 11653 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
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
fiddy Messages postés 11653 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
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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
fiddy Messages postés 11653 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
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
fiddy Messages postés 11653 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
newram66 Messages postés 10 Statut Membre
 
@ fiddy : le probleme que j'ai pas le debuger :))
merci a vous tous :))
0
fiddy Messages postés 11653 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