incremento y decremento de una variable en printf

Escribí un progtwig simple donde int a = 10 el o / p que esperaba era 10 9 9

  printf("a++:%d \ta:%d \t --a: %d \n", a++, a, --a); 

pero el o / p que se obtiene es 9 10 10

Escribí otro printf como printf(" a:%d \t --a: %d \n", a, --a);

el o / p que tengo es 9 9

¿Alguien puede explicarme sobre esto?

Está experimentando un comportamiento indefinido , al tener múltiples expresiones con efectos secundarios, sin puntos de secuencia entre ellos .

No hay garantía de que los argumentos de la función de orden se evalúen, por lo que no hay manera de “esperar” algo aquí (a menos que hayas escrito el comstackdor).