Un comportamiento indefinido (undefined behavior en inglés) en programación se refiere a la operación cuyo comportamiento es arbitrario.
Esta suposición hace válidas varias transformaciones del programa o simplifica las pruebas de validez dándole flexibilidad a la implementación del lenguaje.
Es responsabilidad del programador escribir código que nunca invoque comportamientos indefinidos, pero la implementación del lenguaje tiene permitido mostrar mensajes de diagnóstico cuando esto suceda.
Esto ahorra algunos ciclos del procesador cada vez que esas operaciones son invocadas y asigna la responsabilidad de hacer esas comprobaciones cuando sean relevantes al programador.
Esta lista de ejemplos no es exhaustiva por lo que muchos casos de comportamientos indefinidos no están incluidos.