Project ForgeSign up free
Programming in C
Programming Fundamentals
GATE 2019
Expert

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.

Start revising free