Difficulty: Medium
Correct Answer: -2, 3, 1, 1
Explanation:
Introduction / Context:
This problem targets the evaluation order and short-circuiting of the logical AND operator in C. With &&, evaluation stops at the first operand that is false (zero). If all are true (nonzero), all subexpressions are evaluated, and the final result is 1.
Given Data / Assumptions:
Concept / Approach:
Check each incremented value in left-to-right order. As long as each increments to a nonzero value, the chain continues. If all are true, m becomes 1. The variables will reflect their pre-incremented values.
Step-by-Step Solution:
++i: i becomes -2 → nonzero → true; continue.++j: j becomes 3 → nonzero → true; continue.++k: k becomes 1 → nonzero → true; chain completes.m = 1. Final: i = -2, j = 3, k = 1, m = 1.
Verification / Alternative check:
Replace && with bitwise & to see all subexpressions evaluated regardless of truth, but note the semantic difference. With && as here, behavior matches our step-by-step trace.
Why Other Options Are Wrong:
(b), (c), (d) show incorrect initial values or impossible increments. (e) contradicts the increments and truth evaluation.
Common Pitfalls:
Forgetting that negative numbers are true. Also, mixing up ++i (pre-increment) with i++ (post-increment) can lead to wrong conclusions.
Final Answer:
-2, 3, 1, 1
Discussion & Comments