Resulta que estoy aprendiendo a programar en C++, y estoy teniendo un problema teorico, con las uniones, que no me ocupan el espeacio esperado. El java me quemo el cerebro.
Código
union casa{ int direccion; char nombre [34]; double pisos; } casa; int main() { //no importa por que puse suma ;) cout<<"suma de longitudes: "<< sizeof casa.direccion<<" "<<sizeof casa.nombre<<" "<<sizeof casa.pisos<<endl; cout<<"Longitud total: "<<sizeof casa; return 0; }
lo que me regresa es:
suma de longitudes: 4 34 8
Longitud total: 40
Longitud total: 40
segun tengo entendido ocuparia la lontitud de la variable con mayor tamaño pero en realidad, se va a justando a medida que cambio los tipos y sus longitudes. Quiero decir que si cambio los tipos me respeta el echo de obtener el tamño del mas grande, pero en otros casos sobrepasa el tamño del mas grande (no solo en potencias de 2, xdd).
la pregunta seria ¿como funciona esta agrupacion de bytes? ¿No debe tomar siempre el tamaño del mas grande?
Desde ya muchas gracias por desponder la pregunta noob.