return -1?



  • Hallo,

    Ich habe das Codestück gesehen:

    if (...)
    {
    ...
    return -1;
    }

    Was macht die "return -1" Anweisung? Sowie ich weiss, mit "return" kann man nur
    den Rückgabewert einer Funktion liefern.

    Danke



  • popup schrieb:

    Was macht die "return -1" Anweisung? Sowie ich weiss, mit "return" kann man nur den Rückgabewert einer Funktion liefern.

    Wo genau ist dein Problem? Die Funktion liefert halt -1 zurück.



  • Meistens wird -1 als Rückgabewert dafür verwendet, dass man sieht das etwas schiefgelaufen ist (muss aber nicht immer so sein!). Also könnte das hier bedeuten, dass mit der if-Anweisung vielleicht auf einen Fehler getestet wird, und wenn dieser Eintritt, dann liefert die Funktion -1 zurück, da sie z.B. nicht mehr richtig abgearbeitet werden kann.



  • Wird return in der main()-Funktion aufgerufen, so gibt diese den Rückgabewert an die Startup-Routine des Programms zurück, welche exit() aufruft und dann das Programm verlässt. Vielleicht lag hier das Verständnisproblem? Du musst dich schon mal konkretisieren!



  • Eine der typischen Defintion für Funktionen ist

    int func(float a)
    {
    ....
    return 0;
    }
    

    return 0; oder auch return (0); geschrieben

    falls alles ok ist,alle anderen Werte bedeuten einen Fehler.
    Somit hat man den gesamten Nummernberich von int als Fehlermeldung offen, und
    kann so die unterschiedlichsten Fehler melden.

    oder schau dir die Funktion

    int strcmp( const char *string1, const char *string2 );
    

    an, diese vergleicht 2 Strings und liefert
    als return Wert:

    Value Relationship of string1 to string2
    < 0 string1 less than string2
    0 string1 identical to string2
    > 0 string1 greater than string2

    Da die main Funktion auch nur eine normale C-Funktion ist passiert hier das selbe, der Adressat für das Ergebnis ist aber das Betriebssystem. Somit kann man in Scriptdateien (Batchdateien) abfragen ob das Programm erflogreich
    Retuncode =0 (Konvention) oder mit einem Fehler Returncode != 0 beendet wurde.
    🙂


Anmelden zum Antworten