C | Structure & Union | Question 4

Consider the following C declaration

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Assume that objects of the type short, float and long occupy 2 bytes, 4 bytes and 8 bytes, respectively. The memory requirement for variable t, ignoring alignment considerations, is (GATE CS 2000)

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


Answer: (C)

Explanation: Short array s[5] will take 10 bytes as size of short is 2 bytes.

When we declare a union, memory allocated for the union is equal to memory needed for the largest member of it, and all members share this same memory space. Since u is a union, memory allocated to u will be max of float y(4 bytes) and long z(8 bytes). So, total size will be 18 bytes (10 + 8).

Quiz of this Question

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.

My Personal Notes arrow_drop_up