¿Es (--i == i ++) un comportamiento indefinido?

sta pregunta está relacionada con mi @ anteriproblem. La respuesta que obtuve fue "Es un comportamiento indefinido".

Por favor, alguien explique:

¿Qué es un comportamiento indefinido? ¿Cómo puedo saber que mi código tiene un comportamiento indefinido?

Código de ejemplo:

int i = 5;
if (--i == i++)         
   Console.WriteLine("equal and i=" + i);           
else
   Console.WriteLine("not equal and i=" + i);

//output: equal and i=6

Respuestas a la pregunta(8)

Su respuesta a la pregunta