Skip to content
Related Articles

Related Articles

Improve Article

C | Structure & Union | Question 4

  • Difficulty Level : Basic
  • Last Updated : 28 Jun, 2021
Geek Week

Consider the following C declaration




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

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

Take a step-up from those “Hello World” programs. Learn to implement data structures like Heap, Stacks, Linked List and many more! Check out our Data Structures in C course to start learning today.
My Personal Notes arrow_drop_up
Recommended Articles
Page :