C | Estructura y Unión | Pregunta 4

Considere la siguiente declaración C

struct { 
    short s[5];
    union { 
         float y; 
         long z; 
    }u; 
} t;

Suponga que los objetos del tipo short, float y long ocupan 2 bytes, 4 bytes y 8 bytes, respectivamente. El requisito de memoria para la variable t, ignorando las consideraciones de alineación, es (GATE CS 2000)

(A) 22 bytes
(B) 14 bytes
(C) 18 bytes
(D) 10 bytes

Respuesta: (C)
Explicación: la array corta s[5] tomará 10 bytes ya que el tamaño de la corta es de 2 bytes.

Cuando declaramos una unión, la memoria asignada para la unión es igual a la memoria necesaria para el miembro más grande y todos los miembros comparten este mismo espacio de memoria. Dado que u es una unión, la memoria asignada a u será el máximo de float y (4 bytes) y long z (8 bytes). Entonces, el tamaño total será de 18 bytes (10 + 8).
Cuestionario de esta pregunta

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 *