Difficulty: Medium
Correct Answer: 1 ... 65535
Explanation:
Introduction / Context:
This problem checks your grasp of the three for clauses in C and how they are evaluated, as well as 16-bit integer overflow behavior. The code uses expressions in unexpected clauses and prints with the %u specifier, which adds to the challenge.
Given Data / Assumptions:
short int is 16 bits (range −32768 to 32767).%u prints as unsigned (the argument is int after promotion; although the format is mismatched, typical implementations still display a value).for (init; condition; increment) executes init then condition then body then increment repeatedly.
Concept / Approach:
In this loop, the “init” is the boolean expression i <= 5 && i >= -1 which is evaluated and discarded. The “condition” is ++i, so each iteration starts by incrementing i and testing nonzero. The “increment” is the expression i > 0, which is evaluated and discarded. Thus i climbs from 0 to 1, 2, …; when it passes 32767, it overflows to −32768 and continues up to −1, and the next ++i becomes 0, ending the loop. The printing happens once per iteration.
Step-by-Step Solution:
++i → 1 (true) → prints 1,.Iterate: i runs across all remaining 16-bit values until ++i yields 0 after wrapping from −1 to 0.Net effect: the program prints values equivalent to 1 through 65535 when viewed as unsigned.
Verification / Alternative check:
Replace %u by %d to see the signed sequence (1, 2, …, 32767, −32768, …, −1). With %u, the negative half renders as 32768…65535, yielding the full 1…65535 run.
Why Other Options Are Wrong:
for clauses are legal expressions.No output or 0..5: contradicted by the loop behavior and wraparound.Infinite loop with no printing: the loop terminates when ++i becomes 0.
Common Pitfalls:
Misinterpreting the role of the three for clauses; expecting the initial clause to assign; overlooking integer overflow wrap in two’s complement.
Final Answer:
1 ... 65535.
float a = 0.7;, what will this program print and why?
#includefor loop in C. What does this program print?
#includeswitch statement in C? Note the statement before any case label.
#include
Discussion & Comments