I'm sure if this is the right explanation but what I think is this. After a little bit of meddling around I think your inner printf is outputting a 0 since there is no argument to tell what integer should be used for %d.
The outer printf then outputs the return value of the inner one. It seems to me that this return value is the number of digits outputted by the printf statement for if you try:
CODE
#include<stdio.h>
void main()
{
printf("%d",printf("%d",9999));
}
The output is
QUOTE
99994
Notice that the last digit is the number of digits in 9999 i.e. 4.
I'm not sure if I'm right actually. This is something I noticed (I've used Visual C++ Express 2005).
Hope this helps

P.S. I'd suggest not using getch() and clrscr(). They are non-standard functions. Secondly use:
CODE
int main()
{
/*code in main()*/
return 0;
}
instead of void main().