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.
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é.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?Envoyé par Premium
Thierry
Dans le code donné plus haut, j'initialise bien la racine avec -1 et le pere à NULLEnvoyé par mujigka
J'ai rajouté un default et j'obtiens bien -1 à l'affichage
Code : Sélectionner tout - Visualiser dans une fenêtre à part *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é.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.Envoyé par Premium
Thierry
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager