Tengo esta estructura y union:
struct vmonit {
int1 _bit0;
int1 _bit1;
int1 _bit2;
int1 _bit3;
int1 _bit4;
int1 _bit5;
int1 _bit6;
int1 _bit7;
} ;
union {
struct vmonit bitmonitor;
int8 bytemonitor;
}monitor;
Si yo quiero asignar un valor entero, por ejemplo, el 10 a bytemonitor de una sola vez lo haría así:
monitor.bytemonitor = 10;
Al hacer eso, entiendo que lo que sucede no es solo que la variable bytemonitor adquiera el valor 10, sino que además, las variables, bit3, bit2,bit1, y bit0 de la estructura unida adquieren automáticamente los valores 1 0 1 0 respectivamente.
La pregunta es, ¿estoy en lo cierto?.
Y de estar en lo cierto:
Si yo ahora hago esto:
monitor.bitmonitor.bit7 = 1;
El valor de la variable Bytemonitor ahora sería 138 " 0b10001010??
La union, al asignar un valor a su variable, ¿la modifica en la estructura por orden de elementos/posición de memoria?, como si fuese un puntero al primer elemento??.
Esta ultima pregunta surge por que si en esta estructura, añado otra variable más, por ejemplo, un entero de 8 bits dejandola así:
struct vmonit {
int1 _bit0;
int1 _bit1;
int1 _bit2;
int1 _bit3;
int1 _bit4;
int1 _bit5;
int1 _bit6;
int1 _bit7;
int8 myvariable;
} ;
En este caso, al asignarle valor a la variable de la unión, ¿que sucedería con la de 8 bits myvariable?.
Un saludo.