Bonjour,
j'ai crée un arbre.
J'intialise le type de mon arbre avec la valeur -1 et le pere à NULL mais lorsque j'affiche la valeur du type, ça me donne 0.
Version imprimable
Bonjour,
j'ai crée un arbre.
J'intialise le type de mon arbre avec la valeur -1 et le pere à NULL mais lorsque j'affiche la valeur du type, ça me donne 0.
Le switch ne décrit pas le cas type=-1, et c->type n'est pas initialisé explicitement.
Tu devrais prendre l'habitude d'initialiser systématiquement toutes les variables allouées (statiquement ou dynamiquement). Par exemple avec un petit memset().
Non, pas à cause du switch. Si le switch ne prévoit pas le cas du -1 et ne contient pas de default, son code n'est pas exécuté.Citation:
Envoyé par Premium
Comme ta variable c->type n'est pas initialisée, l'affichage est le contenu de la mémoire à cette adresse, donc valeur imprévisible. Coup de chance, tu obtiens un 0.
Soit tu rajoutes le cas du -1 (ou mieux default, ce qui prendra en compte toutes les valeurs non prévues) dans ton switch, soit tu initialises c->type à une valeur par défaut avant le switch.
A toi de voir.
Il ne me semble pas que le type de la cellule racine de l'arbre est initialisé. A aucun moment il ne reçoit la valeur -1 (ni 0 il me semble). Comme type == -1 n'est pas un choix possible de ta structure switch/case, je n'arrive pas à savoir comment le type de ta racine peut valoir 0 lors de l'affichage. As-tu essayé d'initialiser le champs type de ta structure à une valeur par défaut (c'est une bonne pratique) pour voir si ce dernier est modifié par le programme?Citation:
Envoyé par Premium
Thierry
Dans le code donné plus haut, j'initialise bien la racine avec -1 et le pere à NULLCitation:
Envoyé par mujigka
J'ai rajouté un default et j'obtiens bien -1 à l'affichageCode:*arbre = creer_cellule(0,0,image->width,image->height,tolerance,altitude_max,image,NULL,-1);
Non, tu initialisais les paramètres de la fonction, pas les champs de ta structure. Dans le cas où type valait -1, c->type n'était jamais initialisé.Citation:
Envoyé par Premium
Le fait de mettre un default dans le switch permet de remédier à ce soucis.
Ici, tu passes la valeur -1 au paramètre type de la fonction creer_cellule(). Cela n'a rien à voir avec l'initialisation de c->type à -1.Citation:
Envoyé par Premium
Thierry