Битовые поля структура присваивания неожиданное поведение

Я не знаю почему, но назначение битовых полей не работает должным образом. Возможно, это просто глупость, но я не смог найти проблему.

Любая помощь приветствуется.

<code>typedef struct  a {
    unsigned char a1 :1;
    unsigned char a2 :3;
    unsigned char a3 :2;
    unsigned char a4 :2;
} __attribute__((packed)) mystruct;

int main() {
    mystruct d;
    d.a1 = 0;
    d.a2 = 2;
    d.a3 = 1;
    d.a4 = 2;

    unsigned char *val = (unsigned char*) &d;

    printf("%02X \n", *val);
    printf("%02X \n", sizeof(hola));

    exit(0);
}
</code>

возвращаемый результат:

<code>94
01
</code>

ожидаемый результат:

<code>26
01
</code>

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

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