[C] int et UINT16

int et UINT16 [C] - C++ - Programmation

Marsh Posté le 13-05-2002 à 11:07:34    

j ai une fonction standard qui en parametre prend deux int * et les compare.
Sur un programme j ai 2 UINT16* et je dois utiliser cette fonction.  
Puis-je passer a ma fonction les UINT16* castes(version bourrin)  en int* ET etre sure du resultat de comparaison?

Reply

Marsh Posté le 13-05-2002 à 11:07:34   

Reply

Marsh Posté le 13-05-2002 à 11:14:25    

si tu castes un UINT16 (16 bits) en int (32 bits), la comparaison sur les 16 bits de poids fort de ton UINT16 sera aléatoire, car tu ne sais pas ce que ces bits contiennent (au mieux, ce seront des "0", mais c'est pas sur)


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-05-2002 à 11:17:02    

et t as pas une idee pour un caste plus subtil?

Reply

Marsh Posté le 13-05-2002 à 11:21:28    

Si tu cast en unsigned int ce sera obligatoirement des 0 si tu caste en signed il va te foutre des 1


---------------
Le Tyran
Reply

Marsh Posté le 13-05-2002 à 11:27:38    

letoII a écrit a écrit :

Si tu cast en unsigned int ce sera obligatoirement des 0 si tu caste en signed il va te foutre des 1  




T'es sur ? Il caste un UINT16* en int* donc il fait pointer son pointeur sur 4 octets au lieu de 2. Ce ne sont pas les valeurs qu'il caste, mais les pointeurs.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-05-2002 à 12:55:14    

Harkonnen a écrit a écrit :

 
T'es sur ? ELLE caste un UINT16* en int* donc ELLE fait pointer son pointeur sur 4 octets au lieu de 2. Ce ne sont pas les valeurs qu'il caste, mais les pointeurs.  




 
 :sweat:  d apres toi, vaudrait mieux que je copie le contenu de mes uint16* a la mano vers des int*?

Reply

Marsh Posté le 13-05-2002 à 13:09:22    

Harkonnen a écrit a écrit :

 
T'es sur ? Il caste un UINT16* en int* donc il fait pointer son pointeur sur 4 octets au lieu de 2. Ce ne sont pas les valeurs qu'il caste, mais les pointeurs.  




 
Autant pour moi, lire jusqu'au bout les trucs :)
Effectivement s'il fait un caste sur un pointeur ça va faire nimporte quoi.


---------------
Le Tyran
Reply

Marsh Posté le 13-05-2002 à 14:08:04    

prettysmile a écrit a écrit :

 
 
 :sweat:  d apres toi, vaudrait mieux que je copie le contenu de mes uint16* a la mano vers des int*?  




Je pense que ce serait préférable. Pour chaque UINT16* tu fais un malloc(4) puis tu copies tes *UINT16 dans cet espace
 
N'oublie pas de faire un free() de cet espace à la fin de ton prog.
 
Désolé de t'avoir pris pour un mec, mademoiselle  :hello:

 

[jfdsdjhfuetppo]--Message édité par Harkonnen le 13-05-2002 à 14:09:24--[/jfdsdjhfuetppo]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-05-2002 à 14:14:16    

ok, merci.

Reply

Marsh Posté le 13-05-2002 à 15:43:15    

pas malloc(4)
malloc(sizeof(int))
C'est plus portable


---------------
Le Tyran
Reply

Marsh Posté le 13-05-2002 à 15:43:15   

Reply

Marsh Posté le 13-05-2002 à 15:49:18    

letoII a écrit a écrit :

pas malloc(4)
malloc(sizeof(int))
C'est plus portable  




Exact :jap:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed