Kann mir jemand dieses C++ Verhalten erklären?Speichern der Nummer größer als INT_MAX in einem int
for (int i=0;i<3;++i){
int x;
std::cin >> x;
std::cout << x << std::endl;
}
Wenn ich Eingabe eine Zahl größer als INT_MAX (wie 124124124124124) nur einmal, diese Ausgänge:
2147483647
2147483647
2147483647
Meine beste Vermutung ist, dass es meine Eingabe erkennt eine Zahl ist, aber es schneidet, weil x
passt nur bis 2147483647
. Was ich nicht verstehe, ist warum, nach Eingabe dieser großen Zahl nur einmal, der Eingang "überläuft" zu den anderen Eingängen, und druckt 2147483647
dreimal, dann beendet das Programm.
Der erste Lesevorgang versetzt den Stream in einen Fehlerzustand, und die nachfolgenden Lesevorgänge machen nichts. –