Consider the following C program:
int r(){
static int num=7;
return num--;
}
int main(){
for (r();r();r())
printf("%d",r());
return 0;
}Which one of the following values will be displayed on execution of the program?
- A41
- 52
- C63
- D630
Explanation
r() returns num's CURRENT value then decrements (post-decrement), all sharing one static num=7. Call order: init r()→returns7,num=6 (discarded). Condition r()→returns6,num=5 (truthy, enter loop). Body's r()→returns5,num=4, PRINTS '5'. Increment r()→returns4,num=3 (discarded). Condition r()→returns3,num=2 (truthy). Body's r()→returns2,num=1, PRINTS '2'. Increment r()→returns1,num=0. Condition r()→returns0,num=-1 (falsy, loop ends). Printed sequence: '5' then '2' → displayed as '52'.
Source: GATE CS 2019 (Set-2) (2019)
This question is part of a 15-day revision cycle — sign in and Project Forge will bring it back the day before you'd forget it.