Comment définir plusieurs bits dans une ligne en C?

J’écrirais deux lignes pour définir, par exemple, des bits à quelque chose. Ici, par exemple, je souhaite définir les 8 bits supérieurs de la valeur uint16_t x sur les 8 bits inférieurs de y.

uint16_t y = 0x0034; uint16_t x = 0xFF12; 

Je veux avoir x:

 assert(x == 0x3412); 

J’ai tendance à écrire ces deux lignes:

 x &= 0x00FF; x |= (y << 8); 

Existe-t-il un moyen d’écrire une seule ligne pour obtenir le même effet sans utiliser la macro?

Développez simplement les deux lignes:

 x &= 0x00FF; // x = x & 0xFF x |= (y<<8); // x = x | (y<<8) // and combine x = (x & 0xFF) | (y << 8);