++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
ium1erhöht (solange die Bedingungi < nerfü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 wirdimit0initialisiert.
Nun wird in jedem Iterationsschritt verglichen, ob die Bedingungi < nerfüllt ist, d.h. erst0 < 10und dies ist wahr, also wird der Block (das was ich als...geschrieben habe) ausgeführt und danach dannium1(also auf1erhöht). Nun wird wieder die Bedingung überprüft, jetzt also1 < 10und wiederum der Block ausgeführt und anschließend wiederumierhöht, nun also auf2.
Und so wird die Schleife solange ausgeführt bisiauf10erhöht wurde und nun die Bedingung10 < 10nicht 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
++ioderi++wird ja gar nicht verwendet.
-
@wob danke dir!