++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 alswhile
-Schleife schreiben:int i = 0; while (i < n) { ... ++i; }
Es wird also in jedem Iterationsschritt die Variable
i
um1
erhöht (solange die Bedingungi < 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 wirdi
mit0
initialisiert.
Nun wird in jedem Iterationsschritt verglichen, ob die Bedingungi < n
erfüllt ist, d.h. erst0 < 10
und dies ist wahr, also wird der Block (das was ich als...
geschrieben habe) ausgeführt und danach danni
um1
(also auf1
erhöht). Nun wird wieder die Bedingung überprüft, jetzt also1 < 10
und wiederum der Block ausgeführt und anschließend wiederumi
erhöht, nun also auf2
.
Und so wird die Schleife solange ausgeführt bisi
auf10
erhöht wurde und nun die Bedingung10 < 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
oderi++
wird ja gar nicht verwendet.
-
@wob danke dir!