int main(void) {
static int=5;
if(--i) {
main();
printf("%d",i);
}
}
the output of above program is---
0000
But I think it should be---
1234
I dont know why?please help me.
int main(void) {
static int=5;
if(--i) {
main();
printf("%d",i);
}
}
the output of above program is---
0000
But I think it should be---
1234
I dont know why?please help me.
The reason for the zeros is that
i
is decremented down to zero before the very firstprintf
statement is run. As it unwinds, it prints i (which is still zero) each time.It would be better to use a separate function that
main()
calls and passes a parameter to (and then pass the parameter to each call rather than using a static variable).i
to 5main
untili
becomes zero.i
being zero.printf
There lies the answer.
You can prove this by using a debugger