¿Bitfield es un concepto C o C++?Preguntas sobre C bitfields
¿Se puede usar solo dentro de una estructura? ¿Cuáles son los otros lugares donde podemos usarlos?
AFAIK, los campos de bits son variables de estructura especiales que ocupan la memoria solo para el no especificado. de bits. Es útil para guardar memoria y nada más. ¿Estoy en lo correcto?
que codifica un pequeño programa para entender el uso de los campos de bits - Pero, yo creo que no está funcionando como se esperaba. Espero que el tamaño de la siguiente estructura sea de 1 + 4 + 2 = 7 bytes (considerando que el tamaño de int sin firmar es de 4 bytes en mi máquina), pero para mi sorpresa, resulta ser de 12 bytes (4 + 4 + 4) ¿Alguien me puede decir por qué?
#include <stdio.h>
struct s{
unsigned int a:1;
unsigned int b;
unsigned int c:2;
};
int main()
{
printf("sizeof struct s = %d bytes \n",sizeof(struct s));
return 0;
}
SALIDA:
sizeof struct s = 12 bytes
Para el que menosprecia - ¿con cuáles de estas afirmaciones no está de acuerdo? –
+1: 'implementación dependiente' y 'evitar bitfields' son la clave. –
Aquí estoy parcialmente en desacuerdo con respecto al ahorro de memoria: siéntase libre de especificar campos de bits donde podrían reducir la huella de memoria de una estructura. Pero nunca intentes ser inteligente con ellos y siete veces nunca contarás con lo que el compilador hará con ellos. – dmckee