Wieso cin.get() ?

c++Anfänger

Newbie
Registriert
Mai 2020
Beiträge
1
Hallo,

ich bin noch ein Anfänger in c++ und habe in meinem Studienbuch gelernt, dass man ein Programm mit return0; abschließt. Hat auch immer normal funktioniert, ohne das sich das Programm vorzeitig geschlossen hat.

Jetzt habe ich mir zur Hilfe eine Tut auf YouTube angesehen, indem zusätzlich vor dem Befehl return0; noch cin.get() dazugeschrieben wird. Allerdings verstehe ich nicht ganz wozu das gut sein soll bzw. wann man das benutzt und wann nicht. In meinem Studienbuch kam dieser Befehl bislang noch nie vor.

1589053320372.png


Die zweite Frage wäre, warum nach dem main das void steht?
Ich habe gelesen dass, dadurch einfach kein Rückgabewert zurückgegeben wird, aber warum? Kann man das auch weglassen?

Vielen Dank!
 
  • Gefällt mir
Reaktionen: new Account()
@c++Anfänger

Der Returnwert ist der Wert den du an das aufrufende Element als Rückgabewert übergibst wenn dein Programm fertig ist mit dem was es tut. Es muss nicht 0 sein. Es kann auch 1,2,3 usw sein. Der Aufrufer kann daran erkennen ob das Programm erfolgreich gelaufen ist oder nicht. Ist der Aufrufer z.B. ein Windows Konsolenfenster könnte man den Rückgabecode in einem Skript auswerten. 0 kann hier "Erfolg" signalisieren und 1 "Fehlerhaft"

Ob man das void weglassen kann kommt wahrscheinlich auf den Compiler an. Der Rückgabewert ist aber das "int" vor der Main-Funktion. Das void in den Klammern sind die Parameter die die Main Funktion als Übergabewerte erwartet. In diesem Fall also nichts.
 
  • Gefällt mir
Reaktionen: new Account()
Das cin wird benutzt, damit das Programm auf eine Eingabe des Nutzers wartet und nicht einfach zu geht.

Was die Return machen würde dir ja schon erklärt.
Ergänzung ()

Viel Erfolg bei C++.

Ich habe die Erfahrung gemacht, dass es sehr schwierig ist, sich in Foren oder auf den Internet Seiten mit Definitionen, zurechtzufinden, wenn man noch nicht "voll drin" ist.

Da ich selbst nicht wirklich "drin" bin, kann ich nicht sagen ob das irgendwann besser wird, aber ich nehme es an;).

Ich habe mir jetzt die Grundlagen fürs Multithreading angeeignet...erst war ich völlig erschlagen von den Definitionen, deren Anwendung ich nicht begreifen konnte, aber dann habe ich eine YouTube Videoserie dazu gesehen und dann war es mir zumindest möglich es erfolgreich bei mir anzuwenden...auch wenn ich vermutlich nur einen Bruchteil des ganzen überblicke.

Jemandem zuzuhören, der nicht nur eine Definition hin knallt, sondern den Code vor deinen Augen schreibt und erklärt, warum er/sie bestimmte Dinge macht, hat mir sehr geholfen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: new Account()
DocWindows schrieb:
Ob man das void weglassen kann kommt wahrscheinlich auf den Compiler an.
Naja, nicht wirklich. In C++ ist die void foo(void) Syntax optional und existiert nur wegen backwards-compatibility mit C. Jeder C++ Compiler versteht sowohl void foo(void) als auch void foo() und macht exakt das Gleiche damit. Man kann (und soll) also in C++ das void weglassen. In C ist das etwas anders, genaue Details stehen zB hier: https://stackoverflow.com/questions/51032/is-there-a-difference-between-foovoid-and-foo-in-c-or-c

@c++Anfänger Und bezüglich cin.get(), wie schon erwähnt wurde wird es verwendet, damit das Output-Window nicht sofort zu geht. Du sagst aber, dass du dieses Problem nicht hast, vermutlich weil deine IDE das Fenster für dich offen hält. In dem Fall brauchst du das cin.get() dann natürlich nicht.

Gruß
BlackMark
 
  • Gefällt mir
Reaktionen: new Account() und Baal Netbeck
Zurück
Oben