Partial structure initialization in C: unnamed members default to zero. What does this print? #include<stdio.h> int main() { struct emp { char name[20]; int age; float sal; }; struct emp e = {"Tiger"}; // only name given; others default-initialized printf("%d, %f ", e.age, e.sal); return 0; }

Difficulty: Easy

Correct Answer: 0, 0.000000

Explanation:


Introduction / Context:
Structures in C can be partially initialized with aggregate initializers. Understanding what happens to unspecified members avoids undefined behavior and misinterpretation of output.



Given Data / Assumptions:

  • A struct has three members: char name[20]; int age; float sal;
  • Initializer provides only the first member: {"Tiger"}.
  • Printing the numeric members age and sal.


Concept / Approach:
In an aggregate initializer, any members not explicitly initialized are initialized as if by zero. This rule applies regardless of storage duration when an initializer is present. Therefore, age becomes 0 and sal becomes 0.0.



Step-by-Step Solution:
Assign name = "Tiger".Omitted members age and sal → set to 0 and 0.0 respectively.Print “0, 0.000000”.



Verification / Alternative check:
Explicitly writing struct emp e = {"Tiger", 0, 0.0f}; yields identical behavior; both are well-defined.



Why Other Options Are Wrong:
B: Not garbage—there is an initializer. C: No syntax error. D/E: The behavior is specified by the C standard and is not implementation dependent in this context.



Common Pitfalls:
Confusing uninitialized automatic structs (indeterminate) with partially initialized ones (rest zero). Forgetting the difference between designated and positional initializers.



Final Answer:
0, 0.000000

More Questions from Declarations and Initializations

Discussion & Comments

No comments yet. Be the first to comment!
Join Discussion