Einsteiger braucht hilfe



  • hallo erst mal 🙂
    bin noch ziemlich neu auf diesem gebiet
    meine frage lautet: wieso funktioniert das programm wenn ich par2 mit 2.0 deklariere und ohne dekleration nicht?
    danke schon mal

    #include <iostream>
    using namespace std;

    double do_stuff(double par1, double par2 = 2.0);

    int main(void) {
    int var1;
    double var2;

    // Aufruf von "int do_stuff(int)"
    var1 = do_stuff(10);
    cout << var1 << '\n';

    //Aufruf von "double do_stuff(10.2)"
    var2 = do_stuff(10.2);
    cout << var2 << '\n';

    //Aufruf von "int do_stuff(int, int)"
    var1 = do_stuff (10, 11);
    cout << var1 << '\n';

    //Aufruf von "double do_stuff(double, double)"
    var2 = do_stuff(10.11, 11.22);
    cout << var2 << '\n';
    }

    //Funktionsdefinition

    double do_stuff(double par1, double par2) {
    return(par1 * par2);
    }



  • Weil du die Funktion nicht mit "do_stuff(10)" aufrufen kannst, wenn sie 2 Parameter erwartet (du übergibst hier ja nur einen). Das dürfte einen Compiler-Error geben, richtig? Wenn du allerdings par2 zum Standardparameter machst, ist dieser Aufruf erlaubt. Das heißt quasi: wenn was für par2 übergeben wird, weise es zu, ansonsten weise 2.0 zu.



  • Ich nehme an Du solltest eigentlich

    double do_stuff(double par1, double par2) {
        return(par1 * par2);//häßliche klammern
    }
    [cpp]
    und
    [cpp]
    double do_stuff(double par1) {
        return par1;
    }
    

    anbieten.
    Was DU da machst, heißt "default parameter".



  • Danke für die schnelle antwort
    eig ganz logisch, warum bin ich da nicht selber drauf gekommen 😉
    bis bald



  • Nächstes Mal könntest du ja vielleicht einen Titel wählen, der etwas aussagekräftiger ist als 'brauche Hilfe'. 🙂



  • _matze schrieb:

    Nächstes Mal könntest du ja vielleicht einen Titel wählen, der etwas aussagekräftiger ist als 'brauche Hilfe'. 🙂

    Das ist nur ein Punkt. Dazu kommen die fehlenden [cpp]-Tags und das übliche "funktioniert nicht".
    @OP: Bitte den Thread "du brauchst Hilfe?" einmal lesen!


Anmelden zum Antworten