Prerrequisito: Estructuras y Unión
QUE.1 ¿Cuál será el resultado de este código?
#include <iostream> using namespace std; typedef struct s1 { int a; float b; union g1 { char c; double d; }; } new1; int main() { cout << sizeof(new1); return 0; }
(a)17
(b)16
(c)8
(d)9
Resultado:
(c) 8
Explicación: en el bloque Struct, agrega el tamaño de float e int para que el tamaño sea 8, luego en unión solo declara pero no inicializa, por lo que da 8 en la salida.
QUE.2 ¿Cuál será el resultado de esta pregunta?
#include <iostream> using namespace std; typedef struct s1 { int a; float b; union g1 { char c; double d; } new2; } new1; int main() { cout << sizeof(new1); }
(a)17
(b)16
(c)8
(d)9
Resultado:
(b)16
Explicación: en el bloque Struct, agrega el tamaño de float e int, por lo que el tamaño es 8, luego en union definimos y declaramos ambos en este bloque, por lo que union da 8, por lo que da 16 en la salida.
QUE.3 ¿Cuál será el resultado de esta pregunta?
#include <iostream> using namespace std; typedef struct s1 { int a; float b; union g1 { double c; double d; } new2; } new1; int main() { cout << sizeof(new1) << endl; new1 obj; obj.new2.d = 17; obj.new2.c = 20; cout << obj.new2.d; return 0; }
(a)17 20
(b)16 20
(c)16 17
(d)24 20
Resultado:
(b) 16 20
Explicación: en esta pregunta: en unión, el bloque contiene el tipo de datos de tamaño máximo como doble, por lo que la memoria contiene 8 bytes y cuando inicializamos ‘d’ y ‘c’, el valor ‘d’ se reemplaza por ‘c’ porque los bloques de memoria son iguales entonces, cuando imprimamos el valor ‘d’ y ‘c’, imprimirá 20 y aproximadamente el tamaño que expliqué en los ejemplos anteriores, imprimirá 16.
QUE.4 ¿Cuál será el resultado de esta pregunta?
#include <iostream> using namespace std; typedef struct s1 { int a; float b; struct g1 { double c; double d; }; } new1; int main() { cout << sizeof(new1) << endl; return 0; }
(a)8
(b)16
(c)4
(d)24
Resultado:
(a)8
Explicación: en el bloque Struct, agrega el tamaño de float e int, por lo que el tamaño es 8, luego en el bloque struct g1 solo declara pero no inicializa, por lo que en general da 8 en la salida.
QUE.5 ¿Cuál será el resultado de esta pregunta?
#include <iostream> using namespace std; typedef struct s1 { int a; float b; struct g1 { double c; double d; } new2; } new1; int main() { cout << sizeof(new1) << endl; return 0; }
(a)8
(b)16
(c)4
(d)24
Resultado:
(d)24
Explicación: en el bloque Struct, agrega el tamaño de float e int, por lo que el tamaño es 8, luego en el bloque struct g1 ese momento se declara e inicializa, por lo que agrega el tamaño de ‘c’ y ‘d’, por lo que contiene el tamaño total 24 entonces la salida es 24.
Artículos relacionados:
- Salida de programas C | Juego 44 (Estructura y Unión)
- Cuestionario sobre estructura y unión
- Diferencia entre estructuras C y estructuras C++
Este artículo es una contribución de Devanshu Agarwal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA