Порядок полей при использовании битового поля в Си

У меня есть структура следующего типа

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

Я неправильно смотрю на карту памяти? Спасибо за помощь.

Ответы на вопрос(4)

Ваш ответ на вопрос