我写了两行来设置,比方说,某些东西。这里,例如,我想将uint16_t值x中的高8位设置为y'低8位。
uint16_t y = 0x0034;
uint16_t x = 0xFF12;
我想要x:
assert(x == 0x3412);
我倾向于写下这两行:
x &= 0x00FF;
x |= (y << 8);
有没有一种方法可以在不使用宏的情况下编写单行来实现相同的效果?
答案 0 :(得分:10)
只需展开两行:
x &= 0x00FF; // x = x & 0xFF
x |= (y<<8); // x = x | (y<<8)
// and combine
x = (x & 0xFF) | (y << 8);