char traité comme un short - C++ - Programmation
Marsh Posté le 09-12-2004 à 12:01:44
alors plusieurs solutions à ce silence:
- c'est tellement simple que ça ne merite pas de reponse
- c'est tellement mal expliqué que personne y comprend rien
- c'est mon compilo qui date de mathusalem qui déraille
- ils sont tous en pause café...
(faites que ce soit le 3, faites que ce soit le 3 )
Marsh Posté le 09-12-2004 à 12:17:08
Que veux tu dire par "est traitée comme un short" ? Je comprend pas quel est ton problème...
Marsh Posté le 09-12-2004 à 12:20:23
oki.
alors pour moi, avec ce code, je ne suis supposée gérer que des 'char'.
or il s'avere que dans DetachAll, le *tytab = 0 me gere tytab comme un short et non comme un char => ecriture de 2 octets au lieu d'1 => ecrasement de la variable suivante.
et j'aimerai comprendre pourquoi à cet endroit là, tytab est géré comme un short.
(je sais pas si c'est plus clair...)
Marsh Posté le 09-12-2004 à 12:24:09
Rassure moi, c'est pas sur le short 0x7000 que tu as remarqué ça ?
Marsh Posté le 09-12-2004 à 12:27:16
ben il me met 0 en 7000:87D6 et 7000:87D7, alors que je voudrais qu'il ne le mette qu'en 87D6
Marsh Posté le 09-12-2004 à 12:33:25
Ca me parrait louche ton histoire. Tu es sûre que ce n'est pas un effet de bord ? Tu as essayé de simplifier ton code ?
Marsh Posté le 09-12-2004 à 12:58:43
ben, j'ai fait du debug à la yulara (à savoir printf du tytab et de la variable suivante, vu que je suis sur un systeme embarqué sans debuggueur...), et c'est bien le *tytab=0 qui me pourrit ma variable suivante.
en passant tout en short au lieu de char, plus de soucis, sauf que je perds pas mal d'octets et que les octets sont precieux.
ça m'enerve de pas comprendre pourquoi, parce que ça peut en cacher d'autres des trucs de ce genre
Marsh Posté le 09-12-2004 à 13:08:14
188em on va dire sans OS avec compilo borland 45 (on ne rigole pas )
Marsh Posté le 09-12-2004 à 13:35:21
j'ai pas tout lu dans le détail mais... un sizeof(*tytab) ça te dit quoi?
Marsh Posté le 09-12-2004 à 13:41:36
ça j'ai pas essayé, mais je suppose qu'à cet endroit là il doit me donner 2, vu qu'il m'ecrit 2 octets
Marsh Posté le 09-12-2004 à 13:51:06
sizeof(char) vaut toujours 1, même s'il y a 2 octets.
Il serait plus intéressant que tu nous donne la valeur de sizeof(char*) (car visiblement, un pointeur vaut 4 octets).
Marsh Posté le 09-12-2004 à 14:26:30
argh...heu... faudrait que je revienne au code d'origine pour ça... je vais essayer de le faire cet aprem pour voir ce que ça donne, j'aimerai bien comprendre ce qu'il se passe quand meme.
je vous mets un truc genre "%fp %d %ld %ld",tytab,*tytab,sizeof(tytab),sizeof(*tytab) ?
Marsh Posté le 09-12-2004 à 14:33:06
yulara a écrit : je vous mets un truc genre "%fp %d %ld %ld",tytab,*tytab,sizeof(tytab),sizeof(*tytab) ? |
Ouaip, et un café et l'addition.
Marsh Posté le 09-12-2004 à 15:54:17
roh petard, en fait, c'est mon pointeur qui s'incremente avant l'appel de la fonction
bon ben j'ai plus qu'à aller checher quel est le bout de code qui m'incremente ce truc sans qu'on lui demande
mais pourquoi je l'ai pas vu avant
ah j'allais oublier:
et pour l'addition, c'est pour moi
Marsh Posté le 09-12-2004 à 15:57:57
ReplyMarsh Posté le 09-12-2004 à 16:08:04
merci surtout à vous, maintenant je sais où il faut que je cherche
Marsh Posté le 13-12-2004 à 11:06:58
Citation : voila la fonction où le schlimblick se passe: |
il me semble que l'on dit schmilblick
Marsh Posté le 09-12-2004 à 10:31:14
bonjour tout le monde,
alors voila, je suis tombée sur un comportement que j'aimerai comprendre.
j'ai une variable du type char qui est traitée comme un short dans une de mes fonctions...
voila la fonction où le schlimblick se passe:
voila la definition de ma variable:
et maintenant son appel:
alors qu'est-ce que j'ai pas compris dans la gestion reference, pointeur and co?
---------------
Quizz'n'Blind pour tester vos connaissances