¿Cuál es la diferencia entre los operadores de prefijo y postfix?

El siguiente código imprime un valor de 9. ¿Por qué? Aquíreturn(i++) devolverá un valor de 11 y debido a--i el valor debe ser 10 en sí mismo, ¿alguien puede explicar cómo funciona esto?

#include<stdio.h>
main()
{
    int i= fun(10);
    printf("%d\n",--i);
}

int fun (int i)
{
    return(i++);
}

Respuestas a la pregunta(12)

Su respuesta a la pregunta