Frage zu return 0

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
gizno82
Beiträge: 46
Registriert: Sa Dez 19, 2009 4:03 pm

Frage zu return 0

Beitrag von gizno82 » Mo Apr 29, 2013 2:17 pm

Hallo ich hab mal ne Frage zum Rückgabewert der main Funktion, hab das ganze so gelernt: (wenn man das Program ohne parameter aufrufen möchte.)

Code: Alles auswählen

int main(void)
{
    .
    .
    .
    return 0;
}
Die 0 ist doch der Rückgabewert der Main Funktion und meldet dem Betriebssystem dass das Programm erfolgreich beendet wurde.
ist das korrekt ?

Es gibt auch c compiler die so was hier unterstützen:

Code: Alles auswählen

main ()
{
    .
    .
    .
}
Was zwar funktionieren mag, aber kein schöner Stil ist.
ist die zweite variante überhaupt standart konform ?
Seit warum kommt die main Fuktion ohne Rückgabewert aus ?

Es geht darum, dass jemand ein c - skript geschrieben hat und zwar mit der zweiten main version, diese Person möchte das für den Unterricht verwenden und ich halte das für grob fahrlässig. Hab noch keinen professionellen Programmierer gesehen der die zweite main variante nutzt und so etwas sollte man auch niemand beibringen.
Liege ich richtig ist die erste variante standart und die zweite nicht was spricht gegen die zweite variante (welche ist empfehlenswert) ?

danke für eure erläuterungen

viele Grüße

Gizno

Edit by Xin: Code-Tags hinzugefügt

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Frage zu return 0

Beitrag von Xin » Mo Apr 29, 2013 2:51 pm

gizno82 hat geschrieben:Die 0 ist doch der Rückgabewert der Main Funktion und meldet dem Betriebssystem dass das Programm erfolgreich beendet wurde.
ist das korrekt ?
Ist korrekt.
gizno82 hat geschrieben: Es gibt auch c compiler die so was hier unterstützen: "main () ..."

Was zwar funktionieren mag, aber kein schöner Stil ist.
ist die zweite variante überhaupt standart konform ?
Seit warum kommt die main Fuktion ohne Rückgabewert aus ?
Der Standard wird im Deutsch-Standard mit 'd' geschrieben und der C-Standard ist an der Stelle nicht unbedingt logisch.

main() {} ist alter Kerningham-Ritchie-Stil...

Der Standard geht da auf den alten Stil teilweise(!) noch ein.
main() muss int zurückgeben, das entspricht neben "int main()" aber in C eben auch "main()" und man darf "return rc;" weglassen, dann wird 0 zurückgegeben.

Das ist eine Ausnahme im Standard und halt eben eigentlich unlogisch.
gizno82 hat geschrieben:Es geht darum, dass jemand ein c - skript geschrieben hat und zwar mit der zweiten main version, diese Person möchte das für den Unterricht verwenden und ich halte das für grob fahrlässig. Hab noch keinen professionellen Programmierer gesehen der die zweite main variante nutzt und so etwas sollte man auch niemand beibringen.
Liege ich richtig ist die erste variante standart und die zweite nicht was spricht gegen die zweite variante (welche ist empfehlenswert) ?
Die erste Variante ist definitiv empfehlenswert, die zweite ist aber nicht falsch, weil es hierfür eine Ausnahme im Standard gibt.

Mit über 20 Jahren Programmiererfahrung in C empfehle ich deutlich Variante mit "int main() { ... return EXIT_SUCCESS; }".
Ausnahmen sollte man möglichst meiden. Das "void" in den Klammern ist optional und wird heute in der Regel weggelassen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

gizno82
Beiträge: 46
Registriert: Sa Dez 19, 2009 4:03 pm

Re: Frage zu return 0

Beitrag von gizno82 » Mo Apr 29, 2013 3:56 pm

Danke Xin für die ausführliche Antwort.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Frage zu return 0

Beitrag von nufan » Mo Apr 29, 2013 4:00 pm


Antworten