Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

21

26.04.2012, 21:40

@Embio:
Dein Code ist falsch. So produzierst du eine Endlosschleife, weil Funktionspointer eben immer ungleich 0 sind ;)

Es muss heißen:

C-/C++-Quelltext

1
2
3
do
{
} while (UeberpruefeFeld() != 0);           //<-- solange UeberpruefeFeld etwas anderes als 0 zurückgibt wird die Schleife wiederholt

22

27.04.2012, 16:24

Ja also irgendwie habe ich immer noch nicht richtig verstanden was das return 0; bringt weil wenn ich return 1; schreibe dann bedeutet das, dass ein Fehler gefunden wurde oder was aber es gab doch gar keinen Fehler also warum sollte ich das schreiben?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

23

27.04.2012, 16:30

Ist das denn so schwer?
Wenn dein Programm ordentlich beendet wurde und alles OK war, dann gibst du 0 zurück.
Wenn nicht (z.B. eine vom Programm benötigte Datei wurde nicht gefunden), dann einen Wert außer 0, um den Fehler zu signalisieren.

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

24

27.04.2012, 17:55

Bei Programmen, die du von der Konsole aus startest, kann das notwendig sein. Hier ein kleines Beispiel: Du möchtest ein Skript schreiben, das zuerst ein Projekt kompiliert und es - falls das Kompilieren erfolgreich war - auf deinen Webspace lädt. Wie machst du das? Als erstes würdest du gcc aufrufen. gcc liefert 0 im Erfolgsfall zurück sonst 1. Nun kannst du innerhalb des Skripts überprüfen, ob der Rückgabewert des zuletzt aufgerufenen Programms 1 oder 0 war und dementsprechend weitere Aktionen ausführen.

Natürlich interessiert der Rückgabewert bei gewöhnlichen Desktopanwendungen nicht.

25

27.04.2012, 18:21

Prinzipiell ist es sche** egal was du zurück gibst, da du nicht wirklich was mit dem Rückgabe Wert der Main Funktion
anfangen bzw. darauf reagieren kannst... (korrigiert mich, wenn ich falsch liege)

In der Main Funktion dient das "return 0;" hauptsächlich als Signal für das Ende des Programms!

Probiere es ganz einfach aus!

C-/C++-Quelltext

1
2
3
4
5
std::cout << "test" << std::endl;

return 0;

std::cout << "Diese Ausgabe erfolgt nicht mehr" << std::endl;


Alles was nach dem return kommt wird von der Main Funktion nicht mehr berücksichtigt!

Das liegt da dran das dass Programm sozusagen schon sein Ende erreicht hat...
Nach dem Motto: Wenn man Tot ist, kann man nicht mehr sprechen.

Du kannst auch gerne return 20343; (oder sonst was) zurückgeben, es wird keinen Unterschied, in der Main Funktion machen!
Spätestens wenn du das Kapitel über Funktionen durchgearbeitet hast, wirst du "return" verstehen... Einfach weiter lesen... manche
Fragen beantworten sich dann auch von selbst! ^^

Aber wahrscheinlich habe ich gerade eh nur etwas geschrieben, was schon hundert vor mir geschrieben haben... :P

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

26

27.04.2012, 19:13

Aber wahrscheinlich habe ich gerade eh nur etwas geschrieben, was schon hundert vor mir geschrieben haben... :P

Nein, du hast Quatsch geschrieben und hättest besser mal gelesen, was hier schon geschrieben wurde.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

27

27.04.2012, 19:23

Was genau war da dran Quatsch? Dass nach dem return nichts mehr ausgeführt wird oder dass der ReturnCode für die Main-Funktion eigentlich sch... egal ist? Beides ist nämlich durchaus korrekt, die Festlegung für den ReturnCode des Programms unterliegt allein dem Entwickler. Das Programm könnte genauso gut auch die aktuelle Uhrzeit in Minuten zurückliefern.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

28

27.04.2012, 19:24

Ja also irgendwie habe ich immer noch nicht richtig verstanden was das return 0; bringt weil wenn ich return 1; schreibe dann bedeutet das, dass ein Fehler gefunden wurde oder was aber es gab doch gar keinen Fehler also warum sollte ich das schreiben?

Lass das return 0; doch fürs Erste einfach weg, wenn es dich so verwirrt. Wie du ja schon rausgefunden hast, braucht main() kein return. Wenn du dann zu Funktionen kommst, wird klar werden was es tut.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

29

27.04.2012, 19:37

Was genau war da dran Quatsch? Dass nach dem return nichts mehr ausgeführt wird oder dass der ReturnCode für die Main-Funktion eigentlich sch... egal ist? Beides ist nämlich durchaus korrekt, die Festlegung für den ReturnCode des Programms unterliegt allein dem Entwickler. Das Programm könnte genauso gut auch die aktuelle Uhrzeit in Minuten zurückliefern.

Hast du schonmal ein Programm aus einem anderen Programm oder aus einem Batch-File heraus aufgerufen?
Dann bist du froh, wenn sich der Entwickler an die Konvention hält und nicht irgendwas zurückliefert, sondern etwas, woran du den Erfolg oder Misserfolg des Programms feststellen kannst.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

30

27.04.2012, 20:12

Es gibt keine Konvention, soweit ich weiß. Das sagte d0t ja auch schon. Allein das Programm definiert welche ReturnCodes für was stehen. Das mag ja allgemein 0 für Erfolg und X für Fehlercodes sein, muss aber nicht. Solange das dokumentiert ist, ist das auch für aufrufende Programme oder Batchfiles absolut kein Problem.

PS: Bei dem, was er da programmiert, wird das ohnehin nie jemanden interessieren. Weder ein aufrufendes Programm, noch irgendein Batch-Script.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (27.04.2012, 20:19)


Werbeanzeige