Bonjour,
Voici le code C suivant :
Ne vous occupez pas des fonctions subSequence() et createSequence() : ce sont deux manières différentes d'obtenir un tableau d'unsigned char à une case, contenant le chiffre 213, qui une fois casté en char donne -43.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 char* test = (char*)((subSequence(n->attribute, i, i+tailleKmer-1))->tab); printf("Contenu de test[0] = %d \n",test[0]); sll_s* ll1 = (sll_s*) hash_search(index, test); Duo* d1 = sll_data(ll1); int* int1 = (int*)d1->data2; printf("Adresse de d1->data2 : %p \n\n", &(d1->data2)); printf("Valeur de int1 = %d \n\n",*int1); char* test2 = (char*)((createSequence("TCCC"))->tab); printf("Contenu de test2[0] = %d \n",test2[0]); sll_s* ll2 = (sll_s*) hash_search(index, test2); Duo* d2 = sll_data(ll2); int* int2 = (int*)(d2->data2); printf("Adresse de d2->data2 : %p \n\n", &(d2->data2)); printf("Valeur de int2 = %d \n \n",*int2); if (*int1 == *int2) printf("int1 et int2 sont identique ! \n"); else printf("int1 et int2 sont différents ! \n");
Voici le résultat affiché :
Je ne comprend pas pourquoi quand j'affiche int1 et int2, leurs valeurs sont différentes mais quand je les compares, elles sont identiques ... Elles proviennent pourtant de la même adresse à la base (avant le cast) non ? Sa me pose un maximum de soucis pour la suite de mon programme et j'avoue ne plus rien y comprendre ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Contenu de test[0] = -43 Adresse de d1->data2 : 0x211ea68 Valeur de int1 = 2 Contenu de test2[0] = -43 Adresse de d2->data2 : 0x211ea68 Valeur de int2 = -1 int1 et int2 sont indentique !
Si quelqu'un pouvait éclairer ma lanterne, ce serait super sympa de sa part
Je vous remercie d'avance.
Partager