¿Por qué el comportamiento de desbordamiento de enteros sin signo está definido pero el desbordamiento de enteros con signo no lo está?

El desbordamiento de enteros sin firmar está bien definido por los estándares C y C ++. Por ejemplo, elEstándar C99 (§6.2.5/9) estados

Un cálculo que involucre operandos no firmados nunca puede desbordarse, porque un resultado que no puede ser representado por el tipo entero sin signo resultante se reduce en módulo, el número que es uno mayor que el valor más grande que puede representarse por el tipo resultante.

Sin embargo, ambos estándares establecen que el desbordamiento de enteros con signo es un comportamiento indefinido. De nuevo, desde el estándar C99 (§3.4.3/1)

Un ejemplo de comportamiento no definido es el comportamiento en el desbordamiento de enteros.

¿Existe una razón histórica o (¡aún mejor!) Una razón técnica para esta discrepancia?

Respuestas a la pregunta(5)

Su respuesta a la pregunta