sollte mit einem Standardwert initialisiert werden
-
habe mal eine Frage zu meinem Titel.
"sollte mit einem Standardwert initialisiert werden"std::cout << "Zahl: " << std::flush; double zahl = 0.0; std::cin >> zahl;das ganze wird gemacht damit bei einer falschen Eingabe kein Fehler auftritt.
aber bekommt "zahl" jetzt nicht einen unveränderbaren wert "0.0" ?
-
Nein.
-
steht doch kein const davor, oder ==> also nein
-
Ich frag mich gerade ernsthaft warum du das nicht einfach ausprobierst?!
-
Summernoon schrieb:
habe mal eine Frage zu meinem Titel.
"sollte mit einem Standardwert initialisiert werden"std::cout << "Zahl: " << std::flush; double zahl = 0.0; std::cin >> zahl;das ganze wird gemacht damit bei einer falschen Eingabe kein Fehler auftritt.
Nur am Rande: Bei einer falschen Eingabe tritt trotzdem ein Fehler auf, den du behandeln mußt (sprich: cin-Status abfragen und notfalls zurücksetzen und die Fehleingabe überlesen). Der einzige Vorteil des obigen Codes ist, daß am Ende sicher ein definierter Wert in der Variable steht.
Aber normalerweise hast du nur zwei sinnvolle Möglichkeiten, auf den Eingabefehler zu reagieren - Abbruch oder neu versuchen. Und in beiden Fällen brauchst du den Variableninhalt nicht mehr.
aber bekommt "zahl" jetzt nicht einen unveränderbaren wert "0.0" ?
Unveränderbar ist der Wert nur, wenn du ihn als 'const' definierst. Alles andere kann jederzeit im Programm verändert werden (z.B. durch eine Zuweisung oder über cin). Bei der Initialisierung gibst du nur den Anfangswert der Variable vor.
-
Hmm ... CStoll ich glaub du irrst ^^ Mein das mal ausprobiert zu haben und das verhalten ist wie gewünscht ... auch wenn der Wert bei 0.0 bleibt, falls die Eingabe inkorrekt ist.
-
(D)Evil schrieb:
Hmm ... CStoll ich glaub du irrst ^^ Mein das mal ausprobiert zu haben und das verhalten ist wie gewünscht ... auch wenn der Wert bei 0.0 bleibt, falls die Eingabe inkorrekt ist.
Was genau meinst du? Wenn man Mist eintippt ist std::cin kaputt, mehr hat CStoll doch gar nicht gesagt, oder?
-
Hmm stimmt ... hab es nicht so genau gelesen ... nja das failbit muss man dann halt zurücksetzen ... wenn man cin nochmal braucht

-
(D)Evil schrieb:
nja das failbit muss man dann halt zurücksetzen
und den Müll aus Puffer entfernen

-
(D)Evil schrieb:
Hmm ... CStoll ich glaub du irrst ^^ Mein das mal ausprobiert zu haben und das verhalten ist wie gewünscht ... auch wenn der Wert bei 0.0 bleibt, falls die Eingabe inkorrekt ist.
Wenn Mist eingegeben wird, mußt du das in jedem Fall abfangen und behandeln - und für die Fehlerbehandlung ist es normalerweise egal, welchen Wert die Variable nach dem Eingabeversuch nun hat.
PS: Und daß cin nochmal benötigt wird, ist eigentlich in 99,9% aller Programme sicher
