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
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
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
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.
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.
13872100cookie-checkUnterschied zwischen return 1, return 0, return -1 und exit?yes
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 sollteexit(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 Siereturn
– Änd
24. März 2014 um 8:35 Uhr