Salida de programas C++ | Juego 41 (Estructura y Unión)

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:

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *