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