das Programm ist:Druck-Bit-Typ als Integer? Wie ist die Umwandlung?
typedef struct xp {
int a:2;
int b:2;
int c:1;
} xp;
int main(void)
{
xp x;
memset(&x, 0, sizeof(xp));
x.a = 1;
x.b = 3;
x.c = 1;
printf("%d\n",x.a);
printf("%d\n",x.b);
printf("%d\n",x.c);
return 0;
}
ich 1 -1 -1, warum? Wie sind a, b und c in x gespeichert? Was ist passiert, wenn printf ("% d \ n", x.a); wird ausgeführt?
Dies ist ein Duplikat; Ich weiß, dass ich genau diese Frage schon einmal beantwortet habe. Ich werde sehen, ob ich es aufspüren kann. –
Bis Carl den Betrogenen findet: weil Ihr Compiler die Bitfelder als Zweierkomplementzahlen interpretiert. –
Es ist in der Implementierung definiert, ob sie signiert oder nicht signiert sind. –