while schleife nicht ausführbar
-
fflush(stdin) ist trotzdem irgendwie schräg.
'Flush' bedeutet ja: "Pufferinhalt jetzt sofort schreiben",
was fflush ja sonst auch macht. Aber ein 'fflush(stdin)' bedeutet: "Pufferinhalt verwerfen".
-
@Wade1234 sagte in while schleife nicht ausführbar:
naja nach der eingabe für den zweiten wert von y wird das ergebnis gar nicht mehr angezeigt bzw. das programm beendet sich unmittelbar nach drücken der entertaste.
Das Ergebnis wird sehr wohl angezeigt
@Lambodiablogt sagte in while schleife nicht ausführbar:
printf("\nErgebnis:%i",erg);
und bei mir (wie gesagt
msvc
- sonst machtfflush(stdin)
sowieso keinen Sinn) garted dasgetch()
(bzw._getch()
) wieder. (Ja, ich weiß, eigentlich sollte mindestens noch ein newline instdin
sein, aber es funktioniert mitmsvc
zumindest trotzdem.) Das einzige was fehlt ist die neuerliche ausgabe des Promptsprintf("Wollen Sie noch ein wert berechnrn drücken sie j");
und ein paar newlines für die Lesbarkeit.
-
ja aber die schleife wird bei mir nur einmal durchlaufen bzw. das while könnte man auch durch ein if ersetzen. oder ist mein rechner zu schnell und das drücken von enter beim 2. y wird auch noch von getch ausgewertet?
-
@Wade1234 sagte in while schleife nicht ausführbar:
bei mir
Compiler?
@Wade1234 sagte in while schleife nicht ausführbar:
oder ist mein rechner zu schnell und das drücken von enter beim 2. y wird auch noch von getch ausgewertet?
Ich hab' doch oben geschrieben, daß (zumindest meiner Logik nach) das newline vom zweiten
scanf()
in der Schleife noch instdin
sein und daraufhin vongetch()
gelesen werden sollte. Warum es (msvc 19
) nicht so ist ... ich weiß es nicht.
-
@Swordfish sagte in while schleife nicht ausführbar:
Compiler?
visual c++ 2017 (community edition, falls es da unterschiede gibt)
Ich hab' doch oben geschrieben, daß (zumindest meiner Logik nach) das newline vom zweiten
scanf()
in der Schleife noch instdin
sein und daraufhin vongetch()
gelesen werden sollte. Warum es (msvc 19
) nicht so ist ... ich weiß es nicht.das ist ja komisch.
-
Dann sieh doch mal folgendes an:
https://www.youtube.com/watch?v=j3LL3lhkCTU
-
@rustyoldguy Zusammenhang?
-
@Swordfish sagte in while schleife nicht ausführbar:
@rustyoldguy Zusammenhang?
Deine Bemerkung über return 0 bzw. return EXIT_SUCCESS bei der Haupfunktion main().
Normalerweise setzen die Compiler automatisch return 0 dran. gcc jedenfalls akzeptiert
zum Beispiel void main() überhaupt nicht. Bei mir ist das Gewohnheitssache etwa den
Errorcode zu übergeben.
Zu meiner Schande muss ich gestehen, das ich die Befehlsfolge
echo $?
zum auslesen des von return übergebenen Arguments nicht kannte. Als ich das Video
zu Ende sah, beschloss ich, auf exit(0) vollkommen zu verzichten, erst Recht bei cpp-Programme
-
@rustyoldguy sagte in while schleife nicht ausführbar:
Als ich das Video
zu Ende sah, beschloss ich, auf exit(0) vollkommen zu verzichtenexit() ist ganz praktisch, wenn man das Programm an beliebiger Stelle beenden will, also wenn es sich nicht gerade in der main() befindet. In der main() ist exit() in der Tat nicht sehr sinnvoll.
-
@rustyoldguy sagte in while schleife nicht ausführbar:
Deine Bemerkung über return 0 bzw. return EXIT_SUCCESS bei der Haupfunktion main().
Normalerweise setzen die Compiler automatisch return 0 dran. gcc jedenfalls akzeptiert
zum Beispiel void main() überhaupt nichtEs ging um das Weglassen des
return 0;
inint main
, nicht um das Ändern vonint main
invoid main
. Ersteres ist erlaubt und wohldefiniert (in C++ und auch in C99 - es wird nämlich automatisch 0 returnt), letzteres ist nicht ok.
-
Der Compiler macht nach der letzten } von
main
automatisch einreturn 0;