schreiben I den folgenden Code:Ganze Zahl ohne Vorzeichen in C++
#include <iostream>
using namespace std;
int main() {
unsigned int i=1;
i=i-3;
cout<<i;
return 0;
}
Der Ausgang ist ein Garbage-Wert, was verständlich ist.
Jetzt schreibe ich den folgenden Code:
#include <iostream>
using namespace std;
int main() {
unsigned int i=1;
i=i-3;
i=i+5;
cout<<i;
return 0;
}
Jetzt ist die Ausgabe 3. Was ist denn hier passiert? Wie wird der Müllwert hier um 5 addiert?
es ist nicht Müll, der Wert unterläuft rund um unsigned int max Wert - 2, Sie haben dann 5 hinzugefügt, so dass es positiv wird 3 – EdChum
Nachschlagen: https://en.wikipedia.org/wiki/Two%27s_complement – Meccano
Vorzeichenlose Ganzzahlen überlaufen in wohldefinierter Weise (im Gegensatz zu Ganzzahlen mit Vorzeichen). In Verbindung stehende Fragen: http://stackoverflow.com/questions/16056758/cc-unsigned-integer-overflow, http://stackoverflow.com/questions/9193880/overflowing-of-unsigned-int –