Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
932 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  char traité comme un short

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

char traité comme un short

n°918623
yulara
Byte Hunter
Posté le 09-12-2004 à 10:31:14  profilanswer
 

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:

Code :
  1. void DetachAll (short* tab,char* tytab)
  2. {
  3. for (int i=0; i<DB_ELT_TY_LIST; i++)
  4. {
  5.  if (tab[i] != NULL) blabla...
  6.  tab[i] = NULL;
  7. }
  8. *tytab = 0; // là tytab est traité comme un short et non char ???
  9. }


 
voila la definition de ma variable:

Code :
  1. char *_maxTM   = (char*) MK_FP( 0x7000, 0x87D6 );
  2. char  &maxTM  = *_maxTM;     // declaration d'une reference pour facilité d'usage


 
et maintenant son appel:

Code :
  1. char* m_pcNbMov[NB_MAX];
  2. ...
  3. m_pcNbMov[0] = &maxTM;
  4. ...
  5. DetachAll(tab,m_pcNbMov[0]);


 
alors qu'est-ce que j'ai pas compris dans la gestion reference, pointeur and co?


---------------
Quizz'n'Blind pour tester vos connaissances
mood
Publicité
Posté le 09-12-2004 à 10:31:14  profilanswer
 

n°918665
yulara
Byte Hunter
Posté le 09-12-2004 à 12:01:44  profilanswer
 

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 :ouimaitre: )


Message édité par yulara le 09-12-2004 à 12:08:24

---------------
Quizz'n'Blind pour tester vos connaissances
n°918685
Lam's
Profil: bas.
Posté le 09-12-2004 à 12:17:08  profilanswer
 

Que veux tu dire par "est traitée comme un short" ? Je comprend pas quel est ton problème...

n°918692
yulara
Byte Hunter
Posté le 09-12-2004 à 12:20:23  profilanswer
 

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...)


---------------
Quizz'n'Blind pour tester vos connaissances
n°918695
Lam's
Profil: bas.
Posté le 09-12-2004 à 12:24:09  profilanswer
 

Rassure moi, c'est pas sur le short 0x7000 que tu as remarqué ça ?

n°918703
yulara
Byte Hunter
Posté le 09-12-2004 à 12:27:16  profilanswer
 

ben il me met 0 en 7000:87D6 et 7000:87D7, alors que je voudrais qu'il ne le mette qu'en 87D6


---------------
Quizz'n'Blind pour tester vos connaissances
n°918712
Lam's
Profil: bas.
Posté le 09-12-2004 à 12:33:25  profilanswer
 

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 ?

n°918722
yulara
Byte Hunter
Posté le 09-12-2004 à 12:58:43  profilanswer
 

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 :spamafote:


---------------
Quizz'n'Blind pour tester vos connaissances
n°918725
Lam's
Profil: bas.
Posté le 09-12-2004 à 13:04:20  profilanswer
 

Tu as quoi comme environnement/compilo ?

n°918727
yulara
Byte Hunter
Posté le 09-12-2004 à 13:08:14  profilanswer
 

188em on va dire sans OS avec compilo borland 45 (on ne rigole pas :o )


---------------
Quizz'n'Blind pour tester vos connaissances
mood
Publicité
Posté le 09-12-2004 à 13:08:14  profilanswer
 

n°918746
Moktar1er
No one replies...
Posté le 09-12-2004 à 13:35:21  profilanswer
 

j'ai pas tout lu dans le détail mais... un sizeof(*tytab) ça te dit quoi?

n°918750
yulara
Byte Hunter
Posté le 09-12-2004 à 13:41:36  profilanswer
 

ça j'ai pas essayé, mais je suppose qu'à cet endroit là il doit me donner 2, vu qu'il m'ecrit 2 octets :spamafote:


---------------
Quizz'n'Blind pour tester vos connaissances
n°918759
Lam's
Profil: bas.
Posté le 09-12-2004 à 13:51:06  profilanswer
 

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).


Message édité par Lam's le 09-12-2004 à 13:58:02
n°918796
yulara
Byte Hunter
Posté le 09-12-2004 à 14:26:30  profilanswer
 

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) ?


---------------
Quizz'n'Blind pour tester vos connaissances
n°918803
Lam's
Profil: bas.
Posté le 09-12-2004 à 14:33:06  profilanswer
 

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.

n°918890
Moktar1er
No one replies...
Posté le 09-12-2004 à 15:34:43  profilanswer
 

j'ajouterais: "oui s'il te plait :o"

n°918906
yulara
Byte Hunter
Posté le 09-12-2004 à 15:54:17  profilanswer
 

roh petard, en fait, c'est mon pointeur qui s'incremente avant l'appel de la fonction :pt1cable:
bon ben j'ai plus qu'à aller checher quel est le bout de code qui m'incremente ce truc sans qu'on lui demande :cry:
 
mais pourquoi je l'ai pas vu avant :pfff:
 
ah j'allais oublier:
http://www.delawareaudubon.org/images/coffee.jpg
 
et pour l'addition, c'est pour moi :jap:


Message édité par yulara le 09-12-2004 à 15:55:35

---------------
Quizz'n'Blind pour tester vos connaissances
n°918908
Moktar1er
No one replies...
Posté le 09-12-2004 à 15:57:57  profilanswer
 

yulara a écrit :


et pour l'addition, c'est pour moi :jap:


merci, tu es bien urbaine

n°918919
yulara
Byte Hunter
Posté le 09-12-2004 à 16:08:04  profilanswer
 

merci surtout à vous, maintenant je sais où il faut que je cherche :jap:


---------------
Quizz'n'Blind pour tester vos connaissances
n°921641
spokup
Posté le 13-12-2004 à 11:06:58  profilanswer
 

Citation :

voila la fonction où le schlimblick se passe:


 
il me semble que l'on dit schmilblick

n°923332
Panini
Posté le 14-12-2004 à 21:45:58  profilanswer
 

Il te semble bien :jap:.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  char traité comme un short

 

Sujets relatifs
[PHP/MySQL] Serveur ne traite pas l'info ?Ecrire des entiers dans un tableau de char
char *a=(char *)(0xAdresse) explicationConcaténer un char à la suite d'une string
Conversion char en int, float et double[C++] Conversion char * vers wchar_t *
[C] Probleme de conversion char -> intDelphi : transtypage Interger -> Char : ??
Initialisation d'un char*, malloc ou pas ?Convertir : (char *) -> (int *) [C ANSI]
Plus de sujets relatifs à : char traité comme un short


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR