J'ai été confronté à un épineux (OMI) en question. J'avais besoin de comparer deux adresses MAC, dans la manière la plus efficace.
La seule pensée qui traversa mon esprit en ce moment est la solution triviale - for
boucle, et en comparant les lieux, et je l'ai fait, mais l'enquêteur avait pour objectif de casting.
Le MAC définition:
typedef struct macA {
char data[6];
} MAC;
Et la fonction est (celui que j'ai été invité à mettre en œuvre):
int isEqual(MAC* addr1, MAC* addr2)
{
int i;
for(i = 0; i<6; i++)
{
if(addr1->data[i] != addr2->data[i])
return 0;
}
return 1;
}
Mais comme mentionné, il avait en vue pour la coulée.
Le sens en quelque sorte jeté l'adresse MAC donnée à un int, comparer les deux adresses, et retour.
Mais lors de la coulée, int int_addr1 = (int)addr1;
, seulement quatre octets sera coulé, non? Dois-je vérifier les autres? Sens emplacements 4 et 5?
Les deux char
et int
sont des types d'entiers, de sorte casting est légal, mais ce qui se passe
dans la situation décrite?