Bonjour,

Voici le code C suivant :

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

Voici le résultat affiché :

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

Si quelqu'un pouvait éclairer ma lanterne, ce serait super sympa de sa part
Je vous remercie d'avance.