Ok, also habe ich einige Probleme mit C++ iostreams, die sich sehr seltsam anfühlen, aber es ist wahrscheinlich ein definiertes Verhalten, wenn man bedenkt, dass dies sowohl mit MSVC++ als auch mit G ++ geschieht.Warum verursacht Integer-Überlauf Fehler bei C++ iostreams?
sagen, dass ich dieses Programm haben:
#include <iostream>
using namespace std;
int main()
{
int a;
cin >> a;
cout << a << endl;
cin >> a;
cout << a << endl;
return 0;
}
Wenn ich Überlauf absichtlich durch den ersten cin einen Wert geben, der größer ist als die maximale Grenze eines int ist, werden alle weiteren Anrufe zu cin.operator>>()
sofort aus irgendeinem Grund zurück und a
ist auf einen bestimmten Wert eingestellt. Der Wert scheint nicht definiert zu sein.
Warum und wo wird dieses Verhalten dokumentiert? Gibt es eine Möglichkeit herauszufinden, ob ein solcher Überlauf stattgefunden hat?
Auch dieses ähnliche Programm scheint zu funktionieren, wie ich es vorhabe. Wenn ich den Wert überlaufe, gibt es a
einen Wert, und weiter so, als ob der Überlauf nie passiert ist.