return



  • netrobot schrieb:

    fast vergessen, man soll eigentlich die Funktion auf mehrere Stellen vorzeitig verlassen, es soll auf eine gemeinsame Stelle sein.

    Meint jetzt genau was? 😕



  • z.B.

    void choose(char const& inputChar)
    {
        if (inputChar == 'a')
        {
           //do nothing
           return ;
        }
        if (inputChar == 'b')
        {
           f1();
           return;
        }
    }
    

    es gibt 2 "return" auf verschiedenen Stellen.
    es wär besser

    void choose(char const& inputChar)
    {
        if (inputChar == 'a')
        {
           //do nothing      
        }
        else if (inputChar == 'b')
        {
           f1();
        }
        return;
    }
    


  • Sicher richtig. Aber z.B.

    FILE *f;
    if ((f = fopen("bla", "r"))) {
        if (message != NULL) {
            if (fwrite(message, strlen(message), 1, f) == 1) {
                fclose(f);
            } else ....
        } else ....
    } else ....
    

    finde ich schlimmer als

    if (!(f = fopen("bla", "r")))
        return;
    
    if (message == NULL)
        return;
    
    ....
    

    Und ja es gibt Leute die so (oben) programmieren! 😃



  • kann ich so verstehen, das ist nur eine Frage des Programmierstils. Es gibt keine Stuation, in der man unbedingt einfach "return;" schreiben muss



  • Bei der Rückgabe von (komplexen) Werten kann die ReturnValueOptimization (RVO) u.U. besser zuschlagen, wenn es nur einen Endpunkt gibt.

    Der Rest ist Stilfrage und da scheiden sich auch die Geister.



  • statt

    int main()
    {
      return 0;
    }
    

    darf ich eigentlich auch schreiben

    void main()
    {
      return;
    }
    

    was für einen Wert bekommt das System als Returnwert?



  • Die zweite Variante ist schlicht und einfach falsch 🙂

    MfG SideWinder



  • Eigentlich darf man das nicht - main soll per Standard int zurückliefern. Aber vermutlich dürfte dein Code den Wert 0 ans OS weitergeben.



  • netrobot schrieb:

    darf ich eigentlich auch schreiben

    void main()
    {
      return;
    }
    

    was für einen Wert bekommt das System als Returnwert?

    Nö darfst du nicht. Steht hässlicherweise aber sogar in so einigen Lehrbüchern.
    Bei int main()
    {
    }

    darfst du das das return weglassen, dann wird automatisch return 0 angenommen. Aber nur in main!



  • Darfst du in C++ eigentlich nicht, weil im Standard int main als Einsprungfunktion genannt ist!!
    Aber die main hat eine Besonderheit, man muss am Ende kein return schreiben, da wird dann für gesorgt, das 0 für kein Fehler zurück gegeben wird.


Anmelden zum Antworten