Demande précision sur Instruction en C
Bonjour.
En analysant les programmes exemples en C pour le Raspberry pico, je rencontre ces 2 instructions qui me posent problème :
Code:
1 2 3
| // Set pid and flip for next transfer
val |= ep->next_pid ? USB_BUF_CTRL_DATA1_PID : USB_BUF_CTRL_DATA0_PID;
ep->next_pid ^= 1u; |
Si j’interprète bien la première instruction : si ep->next_pid est vrai alors val contiendra son ancienne valeur combinée avec un or logique avec la valeur de USB_BUF_CTRL_DATA1_PID.
Et si ep->next_pid est faux val sera combinée avec or et la valeur de USB_BUF_CTRL_DATA0_PID.
Est-ce bien cela ?
Après analyse des instructions C précédant celles ci, il s'avère que ep->next_pid ne peut contenir que 0 ou 1 donc l'instruction ep->next_pi ^=1u équivaut à ep->next_pid= 0.
Pourquoi donc faire un ou exclusif ? y-a-t-il une raison cachée ?
merci.