Ich habe einige seltsame Ergebnisse mit Integer-Division in C++. Ich versuche dies zu berechnen: -2147483648/-1.Wie funktioniert C++ Integer Division für Limit und negative Werte?
Was ich 3 unterschiedliche Ergebnisse in 3 verschiedenen Szenarien:
int foo(int numerator, int denominator) {
int res = numerator/denominator; // produces SIGFPE, Arithmetic exception interrupt
cout << res << endl;
}
int main() {
int res = -2147483648/-1;
cout << res << endl; // prints -2147483648
cout << -2147483648/-1 << endl; // prints 2147483648
foo(-2147483648, -1);
return 0;
}
Warum hat die ganzzahligen Teilungsoperation unterschiedliche Ergebnisse in verschiedenen Situationen erzeugt?
Erwähnenswert, dass Code nicht kompiliert auf Windows VS-2015 sagen 'negative Integralkonstante konvertiert in vorzeichenlosen Typ \t' und 'unary Minus-Operator auf unsigned Typ angewandt, Ergebnis noch vorzeichenlos' auf allen '-2147483648/-1' Zeilen –
Einfache Antwort [hier] (http://stackoverflow.com/a/29355979/1460794). – wally
Dies ist, wie Visual Studio es macht: '#define INT_MIN (-2147483647 - 1) // Minimum (signed) int Wert ' – wally