Ich habe einen überzeichneten Überlauf viele Male gemacht, aber jedes Mal Turbo C Wraparound. Zum Beispiel:Warum Turbo C Wraparound signed Integer Overflow jedes Mal, obwohl vorzeichenbehafteter Ganzzahlüberlauf nicht definiert ist?
#include <stdio.h>
void main() {
int i = 100000;
printf("%d", i);
getch();
}
Der Ausgang ist -31072
, die die erwartete Ausgabe ist, wenn Wraparound erfolgt. In binär 100000(dec)
ist 11000011010100000
und letzten 16 Bits sind, die 1000011010100000
speichern. In zwei komplementären Darstellungen ist 1000011010100000
-31072
.
Werfen Sie einen Blick auf [diese] (https://www.youtube.com/watch?v=yG1OZ69H_o-). Es macht einen netten Job, mehr undefiniertes Verhalten zu erklären und spricht speziell über undefiniertes Verhalten und die Art und Weise, wie wir Hyperble manchmal verwenden, um es zu beschreiben. – wally