while schleife: Abbruchbedingung gesucht für cin>>mem1
-
Er hat recht. Es funktioniert mit dem MinGW (4.6.1) wirklich nicht. Habs eben ausprobiert.#include <iostream> #include <vector> #include <limits> using namespace std; int main() { vector<int> ivec1, ivec2; cout << "Series of numbers for ivec1:" << endl; int mem1; while(cin >> mem1 && mem1 != 9999); cin.clear(); cin.ignore(numeric_limits<unsigned int>::max(), '\n'); cout << "\nSeries of number for ivec2:" << endl; while(cin >> mem1 && mem1 != 9999); }Funktioniert nicht.
So funktioniert es aber:
#include <iostream> #include <vector> #include <limits> using namespace std; int main() { vector<int> ivec1, ivec2; cout << "Series of numbers for ivec1:" << endl; int mem1; while(cin >> mem1 && mem1 != 9999); cin.clear(); cin.ignore(numeric_limits<std::streamsize>::max(), '\n'); cout << "\nSeries of number for ivec2:" << endl; while(cin >> mem1 && mem1 != 9999); }
numeric_limits<unsigned int>::max()führt wohl zu einem Überlauf (ignorewill einensigned inthaben) und damit zu UB.
-
out schrieb:
numeric_limits<unsigned int>::max()führt wohl zu einem Überlauf (ignorewill einensigned inthaben) und damit zu UB.MinGW: sizeof(unsigned int) == 4 Byte
MinGW: sizeof(std::streamsize) == 4 ByteMSVC11: sizeof(unsigned int) == 4 Byte
MSVC11: sizeof(std::streamsize) == 8 Byte
Wie eben angesprochen.
Überlauf. An das hat nun eben auch keiner gedacht. Aber ist alles doch ganz logisch. 
-
Danke dir

Funktioniert jetzt auch bei mir mit Code::Blocks und Visual C++ 2010 express.
-
Oh, na klar! Wie konnte ich bloß das unsigned int übersehen, nachdem ich Skym0sh0 schon für das falsche in_avail angefahren habe?
Skym0sh0, besser aufpassen, was du schreibst
!
-
war Absicht und alle sind drauf reingefallen 
~ne wars nicht
*okayface.jpg*~
-
out schrieb:
numeric_limits<unsigned int>::max()führt wohl zu einem Überlauf (ignorewill einensigned inthaben) und damit zu UB.Nein, kein UB.
§4.7/3 schrieb:
If the destination type is signed, the value is unchanged if it can be represented in the destination type (and bit-field width); otherwise, the value is implementation-defined.
-
SeppJ schrieb:
Oh, na klar! Wie konnte ich bloß das unsigned int übersehen, nachdem ich Skym0sh0 schon für das falsche in_avail angefahren habe?
Wie war das nochmal... ein alter Mann...
Immer mit der Ruhe, ein alter Mann ist kein
D-ZugWikipedia-Löschadmin.Nachtrag: Meine Fresse! Der Thread ist ja eine Peinlichkeit ... bitte keiner den Link bereitstellen.