Unerwartetes Verhalten der Zuweisung von Bitfeldern

Ich weiß nicht warum, aber die Zuweisung der Bitfelder funktioniert nicht wie erwartet. Wahrscheinlich ist das nur eine blöde Sache, aber ich konnte das Problem nicht lokalisieren.

Jede Hilfe ist mehr als willkommen.

<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>

zurückgegebene Ausgabe:

<code>94
01
</code>

erwartete Ausgabe:

<code>26
01
</code>

Antworten auf die Frage(2)

Ihre Antwort auf die Frage