int et UINT16 [C] - C++ - Programmation
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)
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
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.
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. |
d apres toi, vaudrait mieux que je copie le contenu de mes uint16* a la mano vers des int*?
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.
Marsh Posté le 13-05-2002 à 14:08:04
prettysmile a écrit a écrit :![]() |
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
[jfdsdjhfuetppo]--Message édité par Harkonnen le 13-05-2002 à 14:09:24--[/jfdsdjhfuetppo]
Marsh Posté le 13-05-2002 à 15:43:15
pas malloc(4)
malloc(sizeof(int))
C'est plus portable
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
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?