Komplexe Zahl



  • Hallo Leute! (-;

    Guten Tag erstmal, ich bin hier neu im Forum. Erstmal möchte ich sagen, dass ich noch nicht so lange programmiere. Also bitte ich um Verzeihung wenn ich etwas "Triviales" übersehen habe. Nun zu meiner Frage. Wenn ich diesen Code ausführe gibt mir die Konsole (1, 0) aus. Die Zahl die ich erwartet hätte wäre aber (2, 1). Ich habe das Problem schon gelöst indem ich den Code etwas umgeschrieben habe. Mich interessiert aber dennoch wo der Fehler ist.

    #include <complex>
    #include <iostream>

    using namespace std;

    complex<float> get_value(complex<float> x) {
    complex<float> bas = x;

    return bas;
    

    }

    int main()
    {

    cout << get_value((2.0f, 1.0f)) << endl;
    
    return 0;
    

    }



  • Du übergibst den Ausdruck (2.0f, 1.0f) an die Funktion. Der Kommaoperator funktioniert so: Werte den linken Ausdruck aus (2.0f), ignoriere dessen Wert, werte den rechten Ausdruck aus (1.0f), das ist der Wert des Kommaausdrucks. Das macht normalerweise nur Sinn, wenn der linke Ausdruck Seiteneffekte hat.

    https://en.wikipedia.org/wiki/Comma_operator



  • Packe den Aufruf in geschweifte Klammern:

    cout << get_value( { 2.0f, 1.0f } ) << endl;
    

    Das ist die sog. Uniform initialization.

    Vor C++11 ging das nur mit direkter Angabe des Datentyps:

    cout << get_value( complex<float>(2.0f, 1.0f) ) << endl;
    

    Bei beiden wird ein anonymes, temporäres Objekt erzeugt.



  • Das selbe Problem hatte ich letztens auch, stehe ja selber noch am Anfang. Aber finde interessant, wie ihr das gelöst habt! Danke



  • Vielen Dank ihr seid super!!! (-;


Log in to reply