retagged by
493 views
0 votes
0 votes
#include<stdio.h>
 main()
{
    static int a=1;
    ++a;
    printf("%d",a);
    if(a<=3)
    main();
    printf("%d",a);
    
}

output: $234444$

i m not getting how extra two 4 is coming?

retagged by

2 Answers

Best answer
3 votes
3 votes

Go line by line

first $a's$ value incremented & $a$ becomes $2$

then,

$printf("\%d",a); \rightarrow$ prints $2$

$if(a<=3)\rightarrow$ true

$main()\rightarrow$ at this point the stack will look like     

           

    $++a\rightarrow$ $a$ becomes $3$

    $printf("\%d",a);\rightarrow$ prints $3$

    $if(a<=3)\rightarrow true$ 

    $main() \rightarrow$    at this point stack will looks like  

                            

            $++a\rightarrow$ $a$ becomes $4$

           $printf("\%d",a);\rightarrow$ prints $4$

           $if(a<=3)\rightarrow false$ 

           $printf("\%d",a);\rightarrow$ prints $4$

         Now, at this point stack will looks like Only 1 line (last line ) left to read

        $printf("\%d",a);\rightarrow$ prints $4$

    Now, stack will looks like  Only last line left to execute

   $printf("\%d",a)\rightarrow$ prints $4$

∴ Final output will be  $234444$ .

The recursion tree will be look like:

$output \rightarrow 234444$

edited by

Related questions

0 votes
0 votes
1 answer
1
Debargha Mitra Roy asked 4 days ago
53 views
#include <stdio.h int main() { int a[3] = {1, 3, 5, 7, 9, 11}; int *ptr = a[0]; ptr += sizeof(int); printf("%d", *ptr); return 0; }(Assume size of int to be $2$ bytes.)T...
0 votes
0 votes
2 answers
3
Debargha Mitra Roy asked Apr 10
104 views
What is the output of the below code?#include <stdio.h void main() { static int var = 5; printf("%d ", var ); if (var) main(); }a. 1 2 3 4 5b. 1c. 5 4 3 2 1d. Error
1 votes
1 votes
1 answer
4
SSR17 asked Feb 29
252 views
#include <stdio.h int main() { int i = -1; int x = (unsigned char)i; printf("%d", x); return 0; }output is 255 , but please explain how