[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