如何在C中的一行中设置多个位?

我会写两行来设置,比方说,有些东西。 这里,例如,我想将uint16_t值x中的高8位设置为y的低8位。

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

我想要x:

 assert(x == 0x3412); 

我倾向于写这两行:

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

有没有一种方法可以在不使用宏的情况下编写单行来实现相同的效果?

只需扩展两行:

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