il programma è:tipo di bit di stampa come intero? Come è la conversione?
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;
}
ottengo 1 -1 -1, perché? Come sono memorizzati a, bec in x? Cosa è successo quando printf ("% d \ n", x.a); viene eseguito?
Si tratta di un duplicato; So che una volta ho risposto esattamente a questa domanda. Vedrò se riesco a rintracciarlo. –
Fino Carl trova la vittima: perché il compilatore interpreta i bit-field come numeri in complemento a due. –
In realtà è definito dall'implementazione indipendentemente dal fatto che siano firmati o non firmati. –