J'ai une fonction très simple de convertir une chaîne 3 char représentant une chaîne de bits à un nombre décimal:Déconcerté par strcmp
int bin3_to_dec(char *bin) {
int result;
result=0;
printf("string: %s\n", bin);
printf("c0: %c\n", bin[0]);
printf("c1: %c\n", bin[1]);
printf("c2: %c\n", bin[2]);
if ((strcmp(&bin[0], "1") == 0))
result += 4;
if ((strcmp(&bin[1], "1") == 0))
result += 2;
if ((strcmp(&bin[2], "1") == 0))
result += 1;
printf("result: %d\n", result);
return result;
}
Quand je lance le programme et les aliments pour cette fonction, la chaîne 111
il faut calculer 7 . au contraire, il émet ceci:
string: 111
c0: 1
c1: 1
c2: 1
result: 1
Pourquoi est-il pas calculer la valeur correcte? Pourquoi seule la troisième condition passe-t-elle avec succès?
if (bin [0] == '1') –
bin = "111", puis & bin [0] points " 111 "et –
bin = & bin [0] = bin + 0 =" 111 "dans ce cas –