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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
return *(uint32_t*)&tableau[0];
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.

Cependant (ce n'est pas moi qui ait écrit ce code), il me semblait plus simple de procéder comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
return (uint32_t)tableau[0];
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 !

J'ai alors essayé une troisième forme, pour le test :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
return *(uint32_t*)tableau;
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 ?

D'avance, merci !

Fointard