fehler mit "int"



  • Summernoon schrieb:

    warum soll ich aus der schleife "springen" ?

    Damit das Programm beendet wird, wenn du nicht aus der Schleife springst, wird immer das von oben wiederholt.



  • danke kaffee.Ich hab jetzt mal deinen code genommen und der geht ja !
    nun war bei mir noch "return 0" ,wofür ist das ? Da ich das noch nicht rect verstanden hab. Zitat:"Das Programm wird ohne Fehler beendet."
    würde ja heißen das nur überall "return 0" drunter schreiben muss^^

    ________________

    ich habe meinen code schon gepostet 😋



  • Hi,

    eigentlich steht das in jedem Anfängerprogrammierbuch (Sprache fast egal 😉 ), aber ich habe gerade Langeweile: Mit "return" springt man aus der aktuellen Funktion heraus und gibt die Ablaufkontrolle wieder an den Aufrufer zurück.
    Man kann damit einen Returnwert, dessen Typ zur Funktionssignatur passen muss:

    int f() {
       return 3;
    }
    
    string g() {
       return string("Simon2");
    }
    
    void h() { // void bedeutet "nichts"
       return;
    }
    
    int main() {
       int i;
       i = f(); // i wird der Wert 3 zugewiesen
       string s;
       s = g(); // s bekommt den Wert "Simon2"
       h(); // kein Returnwert
       return 0; // wegen "int main()"
    }
    

    Der Compiler fordert mindestens ein return am Ende einer Funktion mit folgenden Ausnahmen:
    + "return;" kann für void weggelassen werden
    + Alternative "Rückgabenstatements" werden zugelassen (throw, exit, ...);
    + bei main() darf man es weglassen (es wird standardmäßig mit "return 0" eingesetzt).

    Weitere Besonderheit bei main(): Der Returnwert wird dem Betriebssystem übergeben, das ihn weiterverwenden kann. Nach Konvention (aber IIRC nirgends gefordert) gilt dabei der WErt "0" als "Programm erfolgreich abgearbeitet".

    Hoffe, soweit klar und korrekt.

    Gruß,

    Simon2.



  • also beende ich die Funktion damit und dann kann ich halt danach sowas wie zum beispiel eine eingabe einer zahl oder sowas unterbringen ?

    so ungefähr richtig ?
    danke schon mal im vor.raus

    ____________________
    Ps: Warum wird das wort "vor.raus" zensiert ? (ohne punkt natürlich)



  • Summernoon schrieb:

    also beende ich die Funktion damit und dann kann ich halt danach sowas wie zum beispiel eine eingabe einer zahl oder sowas unterbringen ?

    so ungefähr richtig ?...

    Japp !
    Ich weiß nicht, ob es Dir klar ist, aber Funktionen werden "hierarchisch aufgerufen" - und mit return "springst Du zurück":

    int f() {
       return 1;
    }
    
    int g() {
       cout << f(); // könnte auch mehr anfangen mit dem Rückgabewert von f()
       return 2; // (*1)
    }
    
    int h() {
       cout << g();
       return 3; (*2)
    }
    
    int main() {
       cout << h();
       return 0; (*3)
    };
    

    Hier wird aufgerufen:
    main -> h
    h -> g
    g -> f
    f return -> g (*1)
    g return -> h (*2)
    h return -> main (*3)

    Gruß,

    Simon2.



  • das sagt mir jetzt nich mehr so viel ^^

    wie kommen die zahlen hinter return zustande ?
    also z.B. "return 2" ?

    __________________________



  • Summernoon schrieb:

    das sagt mir jetzt nich mehr so viel ^^

    wie kommen die zahlen hinter return zustande ?
    also z.B. "return 2" ?

    __________________________

    Durch Eintippen ! 🙄

    ICH als "Schreiber der Funktion f()" kann frei festlegen, was meine Funktion zurückliefern soll; sowohl welchen "Typ" (also "Zahl", "Zeichenkette", Datum, ...) als auch welchen "Wert" (2, "Simon2", 1.1.2007, ....).
    In meinem Beispiel habe ich eben 2 gewählt.

    Gruß,

    Simon2.



  • wird den die "2" i-wo aussgeben oder ist das dann halt einfach der name von "return" ?



  • Summernoon schrieb:

    wird den die "2" i-wo aussgeben oder ist das dann halt einfach der name von "return" ?

    return heißt return, wenn du ne 2 dahinter schreibst wird die zurückgegeben, wenn du a dahinter schreibst die Variable a.

    Edit: Habe mal ne Beispielfunktion geschrieben wo man den Sinn von einer Funktion ganz einfach sieht:

    #include <iostream>
    using namespace std;
    
    int maximum(int a, int b)
    {
    if (a<b)
    return b; //b wird zurückgegeben und Funktion abgebrochen
    if (b<a)
    return a;//a wird zurückgegeben und Funktion abgebrochen
    }
    
    int main()  {
       cout << maximum(1,2); //Übergebe an die Funktion maximum 1 und 2 und gebe den rückgabeWert aus
    }
    


  • Summernoon schrieb:

    Ps: Warum wird das wort "vor.raus" zensiert ? (ohne punkt natürlich)

    Tipp : Schreib es mal mit einem "r".
    🙂


Anmelden zum Antworten