¿Cuál es la diferencia entre las dos ubicaciones?

Tengo un programa recursivo. Cuando elprintf se utiliza en la función, genera 123 y, cuando se usa en el exterior, genera 0123.

#include <stdio.h>

fact(int);
int main()
{
    int x=3;
    fact(x);
    printf("\n");
    system("PAUSE");
}

int fact(int y)
{
    if (y > 0)
    {
         fact(y-1);
         printf("%d",y);  
    }
    //printf("%d",y);   
}   

No estoy usando tanto elprintf al mismo tiempo . ¿Qué diferencia hace la ubicación de este?printf declaración de crear?

Respuestas a la pregunta(4)

Su respuesta a la pregunta