[C con Clase] Campos de bits
Santiago García
melasudaquique en yahoo.es
Vie Feb 9 14:57:48 CET 2007
Hola amigos, soy yo otra vez. Quería que me ayudarais con unas dudas que tengo en los campos de bits:
En una estructura como esta:
struct Bits
{
unsigned short bit1:5;//Variable unsigned short de 5 bits
unsigned short bit2:4;//Variable unsigned short de 4 bits
unsigned short bit3:7;//Variable unsigned short de 7 bits
}Param[10];
Si luego uso esta sentencia:
cout << sizeof(Bits);
Lo que aparece en pantalla es 2. Yo supuse que aparecería 3 porque, según se explica:
Bits | 0 1 2 3 4 5 6 7 || 8 9 10 11 12 13 14 15 || 16 17 18 19 20 21 22 23 || 24
_________________________________________________________________________________________________
Var | unsigned short bit 1 || Vacío || bit2 || Vacío || bit4 || Vacío
Según esto, la estructura debería ocupar 3 bytes y no 2. ¿Por qué entonces pone que ocupa 2?
2ª Pregunta: En la misma estructura, si luego uso este bucle:
for(k = 0; k < 10; k++)
{
cin >> Param[k].bit1;
cin >> Param[k].bit2;
cin >> Param[k].bit3;
}
A continuación el compilador me da un error para cada una de las lineas donde escribo los "cin >> ". Pone algo así:
"In function 'int main()':
cannot bind bitfield 'Param[k].Bits::bit1' to 'short unsigned int&'
cannot bind bitfield 'Param[k].Bits::bit2' to 'short unsigned int&'
cannot bind bitfield 'Param[k].Bits::bit3' to 'short unsigned int&'
¿Qué está pasando y cómo lo puedo solucionar?
Un saludo y gracias por vuestra ayuda, Alejandro.
LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com
LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com
LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com
LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com
______________________________________________
LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20070209/874f1d46/attachment.html>
Más información sobre la lista de distribución Cconclase