Bonjour,
dans le cadre du développement d'une appli, je suis tombé sur une ligne de code un peu étrange qui a un comportement encore plus bizarre que ce à quoi elle ressemble :
Je m'explique : tableau est (comme son nom l'indique) un tableau d'uint8_t. La fonction d'où est tirée la ligne ci-dessus est supposée récupérer la valeur du premier uint8_t de ce tableau puis la caster en uint32_t.
Code : Sélectionner tout - Visualiser dans une fenêtre à part return *(uint32_t*)&tableau[0];
Cependant (ce n'est pas moi qui ait écrit ce code), il me semblait plus simple de procéder comme ceci :
cad utiliser directement la valeur plutôt que de caster en pointeur puis déréférencer. Cependant, ces deux lignes ne renvoient pas la même valeur !
Code : Sélectionner tout - Visualiser dans une fenêtre à part return (uint32_t)tableau[0];
J'ai alors essayé une troisième forme, pour le test :
Cette dernière renvoie les mêmes valeurs que la première forme mais je n'arrive pas à saisir en quoi la seconde forme est différente des deux autres... Quelqu'un peut-il m'éclairer ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part return *(uint32_t*)tableau;
D'avance, merci !
Fointard
Partager