Soll ich bei erfolgreicher Funktion 0 oder 1 zurückgeben? [duplicate]

Lesezeit: 3 Minuten

Benutzeravatar von ziq
ziq

Mögliches Duplikat:

Fehlerbehandlung im C-Code
Welchen Rückgabewert sollten Sie für einen fehlgeschlagenen Funktionsaufruf in C verwenden?

Ich verwende immer 0, aber es ist nicht wirklich lesbar if, whileetc.

Soll ich 1 zurückgeben? Warum Hauptfunktion return 0 Für den Erfolg?

  • Die verknüpfte Frage wurde geschlossen.

    – mechanisches_Fleisch

    3. März 2012 um 19:58 Uhr

  • @AdamBernier: Als Duplikat. Es hatte einige sehr relevante Antworten.

    – Oliver Charlesworth

    3. März 2012 um 19:59 Uhr

  • @Oli: Es scheint nicht angemessen, dass die andere Frage als Duplikat geschlossen wurde (vielleicht sehe ich sie einfach nicht). Trotzdem stimme ich dem Schließen dieser und dieser zu: Die Fragen scheinen für diese spezielle Website zu offen zu sein.

    – mechanisches_Fleisch

    3. März 2012 um 20:02 Uhr


  • Diese Antwort hängt davon ab, ob Sie Fehlercodes zurückgeben möchten, im Gegensatz zu true oder false. Wenn mehrere Fehlercodes zurückgegeben werden, ist 0 normalerweise Erfolg und andere Werte stellen Fehler dar. Ich nehme an, die Leute verwenden 0 für Erfolg und ungleich Null für Misserfolg, um konsistent zu bleiben.

    – Marlon

    3. März 2012 um 20:16 Uhr

Benutzeravatar von m0skit0
m0skit0

Es ist durch den C-Standard definiert als 0 für den Erfolg (Credits gehen an hvd).

Aber

Für eine größere Portabilität können Sie die Makros verwenden EXIT_SUCCESS und
EXIT_FAILURE für den herkömmlichen Statuswert für Erfolg bzw. Misserfolg. Sie werden in der Datei deklariert stdlib.h.

(Ich spreche von dem Wert, der an das Betriebssystem zurückgegeben wird hauptsächlich, Ausfahrt oder ähnliche Anrufe)

Was Ihre Funktion betrifft, geben Sie zurück, was Sie möchten, und machen Sie den Code lesbarer, solange Sie dies in Ihren Programmen beibehalten.

  • 0 bedeutet immer Erfolg, aber je nach System dürfen auch andere Exitcodes Erfolg bedeuten.

    Benutzer743382

    3. März 2012 um 19:59 Uhr

  • @AndrewMarshall EXIT_SUCCESS kann einen anderen Wert als 0 haben, aber selbst dann return 0; Auch bedeutet Erfolg.

    Benutzer743382

    3. März 2012 um 20:02 Uhr

  • @AndrewMarshall EXIT_FAILURE darf nicht 0 sein, da 0 von main zurückgegeben wird stets bedeutet Erfolg.

    Benutzer743382

    3. März 2012 um 20:06 Uhr

  • @hvd: In der Tat ist dies in C99, 7.20.4.3.5 impliziert.

    – Oliver Charlesworth

    3. März 2012 um 20:08 Uhr

  • @AndrewMarshall Aus dem C-Standard: “Schließlich wird die Kontrolle an die Hostumgebung zurückgegeben. Wenn der Wert von status Null oder EXIT_SUCCESS ist, wird eine implementierungsdefinierte Form des Status erfolgreiche Beendigung zurückgegeben.” (Dies ist Teil der Beschreibung der exit Funktion unter Verwendung der gleichen Codes.)

    Benutzer743382

    3. März 2012 um 20:08 Uhr

Benutzeravatar von Lindydancer
Lindydancer

Der Grund warum main verwenden 0 für den Erfolg ist, dass es als Exit-Code der Anwendung zum Betriebssystem verwendet wird, wo 0 bedeutet typischerweise Erfolg und 1 (oder höher) bedeutet Versagen. (Natürlich sollten Sie immer die vordefinierten Makros verwenden EXIT_SUCCESS und EXIT_FAILURE.)

Innerhalb einer Anwendung ist es jedoch natürlicher, Null für Fehler und Nicht-Null für Erfolg zu verwenden, da der Rückgabewert direkt in einer verwendet werden kann if wie in:

if (my_func())
{
  ...
}

  • “Innerhalb einer Anwendung ist es jedoch natürlicher, Null für Fehler und Nicht-Null für Erfolg zu verwenden, da der Rückgabewert direkt in einem if wie in verwendet werden kann:” Ich würde stark dagegen sprechen, einfach ein “!” löst nicht nur das Problem, sondern es ist viel klarer und üblicher, IMMER 0 für Erfolg zurückzugeben. Wenn das Betriebssystem ihm folgt, c Standardfunktionen ihm folgen, der meiste Code im Internet ihm folgt, wird es den Leser verwirren.

    – Santropedro

    9. Juli 2019 um 11:21 Uhr

1414480cookie-checkSoll ich bei erfolgreicher Funktion 0 oder 1 zurückgeben? [duplicate]

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

Privacy policy