Порядок полей при использовании битового поля в Си
У меня есть структура следующего типа
typedef struct
{
unsigned int a : 8;
unsigned int b : 6;
unsigned int c : 2;
}x, *ptr;
Что я хотел бы сделать, это изменить значение поля c.
Я делаю что-то вроде следующего
x structure = { 0 };
x->c = 1;
Когда я смотрю на карту памяти, я ожидаю найти00 01, но вместо этого я нахожу00 40, Похоже, при расположении второго байта, он ставит поле в младших битах и б поле в старших битах. Я'Я видел это на компиляторах GCC и Windows.
На данный момент, что я делаю, это следующее, что работает хорошо.
unsigned char ptr2 = (unsigned char*) ptr
*(ptr2 + 1) &= 0xFC
*(ptr2 + 1) |= 0x01
Я неправильно смотрю на карту памяти? Спасибо за помощь.