Anfängerfrage



  • Guten Abend alle zusammen,

    Als erstes möchte ich sagen dass ich zum ersten mal in einem Forum schreibe und ich mich auch nicht sehr bemüht habe meine folgende Frage bereits in einem Thread (oder wie man das nennt), zu suchen. Vielmehr möchte ich für meinen Anfang mal loslegen und mich in die Forum-Aktivitäte einleben. ich hoffe ich verärgere niemanden und das geht so i.O..

    Kurz zu mir. Ich studiere im 1. Semester Mathematik an der ETH in Zürich. Dort lernen wir im Fach Informatik I C++ programmieren.

    Meine kleine kurze Frage bezüglich C++:

    Deklarieren wir z.B. eine Variable vom Typ int = i. So könne wir diese in einer for-Schleife mit ++i um 1 erhöhen. Bsp.:

    for (int i = 0; i < e; ++i)

    Ob wir nun ++i oder i++ schreiben hat keinen Effekt. So jedenfalls sehe ich das in meine Ausgabe der Console. im Folgenden Programm.

    **#include <iostream>

    double pow(double b, int e)
    {
    double result = 1.0;
    if (e < 0)
    {
    b = 1.0 / b;
    e = -e;
    }
    for (int i = 0; i < e; i++)** // ++i oder i++ spielt keine Rolle
    **result *= b;

    return result;
    }

    int main()
    {

    std::cout << pow(2.0, -2) << std::endl;
    std::cout << pow(1.5, 2) << std::endl;
    std::cout << pow(-2.0, 9) << std::endl;

    return 0;
    }**

    Aber es scheint dass dies nicht immer so ist, denn in folgendem Programm verändert dies meine Ausgabe.

    **#include <iostream>

    int func_b (int a, int b)
    {
    return ++a + --b;
    }

    int main()
    {
    int x = 5;
    int y = func_b (3, x++);
    std::cout << "x = " << x << " y = " << y << std::endl;

    return 0;
    }**

    Ausgabe mit x++ ist x = 6 y = 8

    Ausgabe mit ++x ist x = 6 y = 9

    Kann ich mir dies so erklären, dass mit der einen Variante die Funktion sich nicht um die Erhöhung von x kümmert und mit der anderen eben schon? Vielleicht um beide Möglichkeiten nach bedarf nutzen zu können?

    Wäre wirklich super wenn ihr mir helfen könntet.

    Mit freundlichen Grüßen Kevin 😃



  • hallo
    ich bin mir nicht sicher aber ich denke du musst dich damit befassen dann kannst du dein Problem lösen

    https://de.wikibooks.org/wiki/C%2B%2B-Programmierung:_Liste_der_Operatoren_nach_Priorität

    die Operatoren an sich haben verschiedene Bedeutung und haben unterschiedliche Priorität.



  • int i = 5;
    int a = ++i;
    

    Hier wird i zuerst inkrementiert und dann ausgewertet, a und i haben jetzt den Wert 6.

    int i = 5;
    int a = i++;
    

    Hier wird i zuerst ausgewertet und an a zugewiesen, und dann inkrementiert. Jetzt hat a den Wert 5 und i den Wert 6.



  • DAs sind Post- bzw Preincrement.

    In der for-Schleife bemerkst du den Unterschied nicht, da das Ergebnis des Ausdrucks (i++ bzw. ++i) nicht verwendet wird.



  • Belli du bist der Hammer, Danke! Dass ist frech und mal wieder cool 👍 I like C++ 🕶

    Und am coolsten sind die schnellen Antworten. Danke euch beiden echt!


Anmelden zum Antworten