Difficulty: Easy
Correct Answer: 0, 0, 0
Explanation:
Introduction / Context:
C guarantees that objects with static storage duration (including static arrays) are zero-initialized if not explicitly initialized. This question tests that rule and simple indexing.
Given Data / Assumptions:
Concept / Approach:
Because a is static, all 20 elements start at 0. Setting a[0] = i (which is 0) does not change anything. a[1] remains 0 because no code modifies it. The variable i remains 0 as well.
Step-by-Step Solution:
Initial state: a[0..19] = 0 due to static zero-initialization; i = 0.Execute a[i] = i → a[0] = 0.No statements touch a[1] → it stays 0.printf prints a[0], a[1], i → 0, 0, 0.
Verification / Alternative check:
Changing static to automatic (non-static) and leaving it uninitialized would produce indeterminate values for local non-static arrays, but that is not the case here. The standard mandates zero-initialization for static storage duration.
Why Other Options Are Wrong:
(a), (b), (d), (e) imply nonzero values that contradict default zero-initialization and the assignments shown.
Common Pitfalls:
Confusing static storage duration with the static keyword used for internal linkage at file scope; here it controls storage duration and initialization semantics.
Final Answer:
0, 0, 0
Discussion & Comments