del programa es:¿tipo de bit de impresión como número entero? ¿Cómo es la conversión?
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;
}
me sale 1 -1 -1, ¿por qué? ¿Cómo se almacenan a, byc en x? ¿Qué pasó cuando printf ("% d \ n", x.a); ¿es ejecutado?
Esto es un duplicado; Sé que respondí exactamente esta pregunta una vez. Veré si puedo rastrearlo. –
Hasta que Carl encuentre el engañado: porque su compilador interpreta los campos de bits como números complementarios de dos. –
En realidad, está definido por la implementación ya sea que estén firmados o no. –