Warum ist ++ etwas anderes wie +1?
-
Weil "x++" "x=x+1" entspricht. Das ist offensichtlich etwas anderes.
-
Anstatt x+2 zu schreiben musst du x+=2 schreiben. Du kannst zum Beispiel auch x = x+2 schreiben. Wenn du nur x+2 schreibst ist das Ergebnis zwar den Wert von x plus 2 aber du sagst nicht das das Ergebnis auch in x gespeichert werden soll.
-
Swordfish schrieb:
@h4h0r: Setzen, sechs!
Welcher Knochenfisch wagt es, mich von der Seite anzuquatschen?
-
...
-
manni66 schrieb:
Weil "x++" "x=x+1" entspricht. Das ist offensichtlich etwas anderes.
Genau genommen entspricht
x=x+1
einem++x
, da der Rückgabewert vonx=x+1
schließlich schon um 1 erhöht wurde.x++
exakt auszudrücken ist ein bisschen ekeliger.[/klugscheiß]
-
x++ exakt auszudrücken ist ein bisschen ekeliger.
++x-1
?
-
Swordfish hat im Gegensatz zu Arcoth das Problem von Jenieerre auf Anhieb verstanden.
EDIT:
Da helfen wir uns mit einer Hilfsvariablen var zur Veranschaulichung, SeppJ:var = ++x; -> x = x+1; var = x;
var = x++; -> var = x; x = x+1;
-
var = x++; -> var = x; x = x+1;
x = x++; // => x = x; x = x+1;
Erzähl mal, wo die Unterschiede liegen.
-
Arcoth schrieb:
x++ exakt auszudrücken ist ein bisschen ekeliger.
++x-1
?Dafür müsste der Typ von x Minus unterstützen* (und (x+1)-1 muss wieder x ergeben+), was ja nicht unbedingt gegeben ist, bloß weil der Typ +1 kann.
(Ja, das ist eine faule Ausrede)
*: Klugscheißergegenbeispiel: Ein forward iterator (der dann aber auch kein +1 kann).
+: Klugscheißergegenbeispiel: 9007199254740992.0 (in den üblichen double-Implementierungen)
-
Arcoth schrieb:
var = x++; -> var = x; var = x+1;
Das ist kein Zitat weil ich das nie geschrieben habe.
-
Das ist kein Zitat weil ich das nie geschrieben habe.
Korrigiert. Und nun hör' auf um den heißen Brei herumzureden.
@SeppJ:
[&]{ auto x_ = x; ++x; return x_; }()
Edit²:
*: Klugscheißergegenbeispiel: Ein forward iterator (der dann aber auch kein +1 kann).
+: Klugscheißergegenbeispiel: 9007199254740992.0 (in den üblichen double-Implementierungen)
-
Arcoth schrieb:
@SeppJ:
[&]{ auto x_ = x; ++x; return x_; }()
Das war's was ich ursprünglich mit ekelig meinte.
-
SeppJ schrieb:
Arcoth schrieb:
@SeppJ:
[&]{ auto x_ = x; ++x; return x_; }()
Das war's was ich ursprünglich mit ekelig meinte.
Ich habe nachgedacht, ob es vielleicht einen dirty-hack in
<algorithm>
oder<functional>
gibt, damit wir Code-Golf spielen können, aber den habe ich schnell aufgegeben.