How to set multiple bits in one line in C?
I'd write two lines to set, say, some bits to something. Here, for example, I want to set upper 8 bits in uint16_t value x to y's lower 8 bits. uint16_t y = 0x0034; uint16_t x = 0xFF12; I want to have x: assert(x == 0x3412); I tend to write these two lines: x &= 0x00FF; x |= (y << 8); Is there a way of writing a single line to achieve the same effect without using macro? clcto Just expand out the two lines: x &= 0x00FF; // x = x & 0xFF x |= (y<<8); // x = x | (y<<8) // and combine x = (x & 0xFF) | (y << 8); 来源: https://stackoverflow.com/questions/21786843/how-to-set-multiple-bits-in-one-line