Warum ist ein vorzeichenloser Integer-Überlauf definiert, ein vorzeichenbehafteter Integer-Überlauf jedoch nicht?

Der vorzeichenlose Ganzzahlüberlauf ist sowohl im C- als auch im C ++ - Standard gut definiert. Zum Beispiel dieC99 Standard (§6.2.5/9) Zustände

Eine Berechnung mit vorzeichenlosen Operanden kann niemals überlaufen, da ein Ergebnis, das nicht durch den resultierenden vorzeichenlosen Integer-Typ dargestellt werden kann, modulo um die Zahl reduziert wird, die um eins größer ist als der größte Wert, der durch den resultierenden Typ dargestellt werden kann.

Beide Standards geben jedoch an, dass der Überlauf von Ganzzahlen mit Vorzeichen undefiniertes Verhalten ist. Wiederum aus dem C99-Standard (§3.4.3/1)

Ein Beispiel für ein nicht definiertes Verhalten ist das Verhalten bei ganzzahligem Überlauf

Gibt es einen historischen oder (noch besseren!) Technischen Grund für diese Diskrepanz?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage