Unterschied zwischen return 1, return 0, return -1 und exit?

Lesezeit: 4 Minuten

Betrachten Sie zum Beispiel den folgenden Code:

int main(int argc,char *argv[])
{
   int *p,*q;
   p = (int *)malloc(sizeof(int)*10);
   q = (int *)malloc(sizeof(int)*10);
   if (p == 0)
{
    printf("ERROR: Out of memory\n");
        return 1;
}


   if (q == 0)
{
    printf("ERROR: Out of memory\n");
        exit(0);
}

   return 0;
}

Was macht return 0, return 1, exit(0) tun in dem oben genannten Programm?
exit(0) wird das Gesamtprogramm verlassen und die Steuerung kommt aus der Schleife, aber was passiert, wenn return 0, return 1, return -1.

  • Das müssen Sie auch sehen – Unterschied zwischen Ausfahrt und Rückkehr

    – Suvarna Pattayil

    24. März 2014 um 8:24 Uhr


  • Für eine, exit(0) Die Rückkehr von einem Fehler bei der Speicherzuordnung gibt jemandem ein falsches Trostgefühl, weil es mit ziemlicher Sicherheit so sein sollte exit(EXIT_FAILURE) (Das Programm hat schließlich nur einen Mem-Alloc bombardiert).

    – WhozCraig

    24. März 2014 um 8:28 Uhr

  • exit ist eine Standardbibliotheksfunktion, wenn Sie sie also verwenden, müssen Sie #einschließen, was bei Verwendung nicht erforderlich ist return

    – Änd

    24. März 2014 um 8:35 Uhr

Benutzeravatar von Paolo
Paolo

return aus main() ist äquivalent zu exit

die Programmausführung wird sofort mit beendet Exit-Status gesetzt als Wert, an den übergeben wird return oder exit

return in einer inneren Funktion (nicht main) beendet sofort die Ausführung der spezifischen Funktion und gibt das angegebene Ergebnis an die aufrufende Funktion zurück.

exit von überall auf Ihrem Code wird die Programmausführung sofort beendet.


Status 0 bedeutet, dass das Programm erfolgreich war.

Status ungleich 0 bedeutet, dass das Programm aufgrund eines Fehlers oder einer Anomalie beendet wurde.

Wenn Sie mit einem anderen Status als 0 beenden, sollten Sie eine Fehlermeldung ausgeben stderr also anstatt zu verwenden printf besser sowas wie

if(errorOccurred) {
    fprintf(stderr, "meaningful message here\n");
    return -1;
}

Beachten Sie, dass es (je nach Betriebssystem) einige Konventionen zu Rückgabecodes gibt.

Google nach “Ausgangsstatuscodes” oder ähnlichem und du wirst viele Informationen zu SO und anderswo finden.


Erwähnenswert ist, dass das Betriebssystem selbst Ihr Programm mit bestimmten Exit-Statuscodes beenden kann, wenn Sie versuchen, einige ungültige Operationen wie das Lesen von Speicher auszuführen, auf den Sie keinen Zugriff haben.

Um den Ausführungsstatus anzuzeigen.

Status 0 bedeutet, dass das Programm erfolgreich war.

Status ungleich 0 bedeutet, dass das Programm aufgrund eines Fehlers oder einer Anomalie beendet wurde.

gib n zurück; aus Ihrer Haupteingabefunktion wird Ihren Prozess beenden und dem übergeordneten Prozess (demjenigen, der Ihren Prozess ausgeführt hat) das Ergebnis Ihres Prozesses melden. 0 bedeutet ERFOLG. Andere Codes zeigen normalerweise einen Fehler und seine Bedeutung an.

return n aus Ihrer Haupteingabefunktion wird Ihren Prozess beenden und dem übergeordneten Prozess (demjenigen, der Ihren Prozess ausgeführt hat) das Ergebnis Ihres Prozesses melden. 0 bedeutet ERFOLG. Andere Codes zeigen normalerweise einen Fehler und seine Bedeutung an.

  • Ist es dasselbe, “Elternprozess” als “Aufruffunktion” zu sagen?

    – carloswm85

    9. August 2018 um 13:27 Uhr

Benutzeravatar von Suvarna Pattayil
Suvarna Pattayil

Wie hier erläutert, im Zusammenhang mit main beide return und exit mach das selbe

F: Warum müssen wir return oder exit?

A: Um den Ausführungsstatus anzuzeigen.

In Ihrem Beispiel würde der Code auch dann einwandfrei laufen, wenn Sie keine return- oder exit-Anweisungen hätten (vorausgesetzt, alles andere ist syntaktisch usw. korrekt. Auch wenn (und es sollte sein) main kehrt zurück int du brauchst das return 0 Am Ende).

Aber nach der Ausführung haben Sie keine Möglichkeit herauszufinden, ob Ihr Code wie erwartet funktioniert hat. Sie können den Rückkehrcode des Programms verwenden (in *nix-Umgebungen mit $?), wodurch Sie den Code erhalten (wie von festgelegt exit oder return) . Da Sie diese Codes selbst festlegen, wissen Sie, an welcher Stelle der Code vor dem Beenden angekommen ist.

Du kannst schreiben return 123 wo 123 zeigt den Erfolg der Post-Execution-Checks an.

Normalerweise in *nix-Umgebungen 0 wird als Erfolg und Nicht-Null-Codes als Fehler gewertet.

Benutzeravatar von Søren Debois
Sören Debois

return n aus main ist äquivalent zu exit(n).

Der gültige Rückgabewert ist der Rest Ihres Programms. Seine Bedeutung ist betriebssystemabhängig. Unter Unix bedeutet 0 eine normale Beendigung und ein Wert ungleich Null zeigt an, dass diese Art von Fehler Ihr Programm gezwungen hat, zu beenden, ohne seinen beabsichtigten Zweck zu erfüllen.

Es ist ungewöhnlich, dass Ihr Beispiel 0 (normale Beendigung) zurückgibt, wenn es scheint, dass der Arbeitsspeicher erschöpft ist.

return in Funktion Ausführung zurück zum Aufrufer und exit from-Funktion beendet das Programm.

in main Funktion return 0 oder exit(0) sind gleich, aber wenn Sie schreiben exit(0) In einer anderen Funktion wird Ihr Programm diese Position verlassen.

Rückgabe verschiedener Werte wie return 1 oder return -1 bedeutet, dass das Programm einen Fehler zurückgibt.

Wann exit(0) wird zum Beenden des Programms verwendet, Destruktoren für nicht statische Objekte mit lokalem Geltungsbereich werden nicht aufgerufen. Aber Destruktoren werden aufgerufen, wenn return 0 verwendet wird.

1387210cookie-checkUnterschied zwischen return 1, return 0, return -1 und exit?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy