++i bei C++ anhand eines Beispiel



  • Hallo,
    ich bin ganz neu hier, und mir ist ++i bzw. i++ bisschen unklar.
    zum Beispiel wir rechnen Skalarprodukt von zwei Vektoren, die jeweils n Komponenten haben, nämlich a(0)...a(n-1) und b(0)...b(n-1).

    Skalarprodukt rechnen wir so: Summe von i=0 bis (n-1) und die Summanden sind ai*bi.
    vector<double> a(n),b(n); double s=0;
    for (int i=0; i<n; ++i) s+=a[i]*b[i];

    Ich verstehe es wenn man sagt, i=5, j=++i, dann ist j=6, da in diesem Fall erst increment dann assign. Aber was versteht man unter diesem Beispiel, wir haben nur ++i.
    Könnt jemand kurz erklären oder die erste zwei und letzt zwei Summanden davon auflisten.
    Vielen Dank im Voraus!

    MfG Malik



  • Mir scheint, du hast eher Problem die for-Schleife generell zu verstehen.

    for (int i=0; i<n; ++i) ... läßt sich auch als while-Schleife schreiben:

    int i = 0;
    while (i < n)
    {
      ...
      ++i;
    }
    

    Es wird also in jedem Iterationsschritt die Variable i um 1 erhöht (solange die Bedingung i < n erfüllt ist).



  • @Th69
    heißt dass, das wenn man erst für i=0 einmal durchführen, und dann um 1 erhöht, danach prüft mann ob i=0+1=1 kleiner als 0 ist. Oder habe ich immer noch falsch verstanden.



  • Wie kommst du auf "kleiner als 0 ist"?

    Angenommen n = 10.
    Zuerst wird i mit 0 initialisiert.
    Nun wird in jedem Iterationsschritt verglichen, ob die Bedingung i < n erfüllt ist, d.h. erst 0 < 10 und dies ist wahr, also wird der Block (das was ich als ... geschrieben habe) ausgeführt und danach dann i um 1 (also auf 1 erhöht). Nun wird wieder die Bedingung überprüft, jetzt also 1 < 10 und wiederum der Block ausgeführt und anschließend wiederum i erhöht, nun also auf 2.
    Und so wird die Schleife solange ausgeführt bis i auf 10 erhöht wurde und nun die Bedingung 10 < 10 nicht mehr wahr ist - und die Schleife wird damit beendet.



  • @Th69 ach, ich habe vertippt. Ich meinte kleiner als n. War mein Fehler.
    Danke für die Erklärung. Das heißt die erste Summand ist a[0] multipliziert mit b[0] und a(n),b(n) meint dass die jeweils n Komponenten haben, falls ich mich richtig erinnert.



  • @Th69 noch eine kurz Frage, was wäre der Fall, wenn man ++i durch i++ ersetzt.



  • @Malik sagte in ++i bei C++ anhand eines Beispiel:

    @Th69 noch eine kurz Frage, was wäre der Fall, wenn man ++i durch i++ ersetzt.

    kein Unterschied, denn der Rückgabewert von dem ++i oder i++ wird ja gar nicht verwendet.



  • @wob danke dir!


Log in to reply