Pre- oder Post-Inkrementierung bei for-Schleifen?
-
314159265358979 schrieb:
Wenn man i++ sieht, sollte der erste Gedanke sein "Wofür wird hier der Rückgabewert gebraucht". Zumindest bei mir ist das so. Wenn ihr nicht so denkt, ist das euer Fehler.
Ich denke immer: Warum pre-inc, warum post-inc? Weil: Einen Wert geben ja beide zurück. Aber laut Deiner Definition ist das ja fehlerhaft und ich wälze mich jetzt erst mal demütig im Dreck.
-
@hustbaer: Hab ja extra "Spektrum" gesagt. Davon konnte ich natürlich nur einige Punkte rausschreiben, nicht alle. Und er Pfeil ging ja auch nach rechts noch weiter.
@7xCore: Selbst wenn etwas stimmt, gibt es ja unterschiedliche Nettigkeitsstufen in der Ausdrucksweise.
-
314159265358979 schrieb:
Ich freue mich schon auf Flames ala "Du siehst deine Meinung als einzig richtige an blafu", aber ist nunmal so, dass meine die einzig logisch sinnvolle und begründbare ist.
Nein. Du sagst A weil A. Das ist nicht logisch Begründet.
Ich stimme dir zwar zu, dass ++i immer i++ vorzuziehen ist - aber das bedeutet nicht dass i++ logisch anders gelesen wird.Natürlich kann man jetzt argumentieren dass ++i ja immer besser ist und somit i++ wenn es denn vorkommt einen gewissen Sinn haben muss. Aber das ganze kann man umdrehen: immer i++ verwenden weils eh egal und somit muss, wenn ich denn plötzlich mal ein ++i sehe hier der Rückgabewert eine wichtige Rolle spielen.
So lässt sich für beides argumentieren.
-
dieeinzigwahremeinung schrieb:
314159265358979 schrieb:
Wenn man i++ sieht, sollte der erste Gedanke sein "Wofür wird hier der Rückgabewert gebraucht". Zumindest bei mir ist das so. Wenn ihr nicht so denkt, ist das euer Fehler.
Ich denke immer: Warum pre-inc, warum post-inc? Weil: Einen Wert geben ja beide zurück. Aber laut Deiner Definition ist das ja fehlerhaft und ich wälze mich jetzt erst mal demütig im Dreck.
Aber i++ evaluiert im Ausdruck mit i und nach der Anweisung mit i+1, während ++i im Ausdruck und nach der Anweisung mit i+1 evaluieren - weiß du wie gut man Anfänger damit verwirren kann, dass man Code schreibt, der gezielt Eigenschafte des post-inc einsetzt? Ja kann man, eh geht doch nicht!
-
7xCore schrieb:
Was ist dan der Aussage von PI arrogant?
Dass es ein Fehler ist, wenn man nicht seiner Meinung ist.
Das einzige was an ihr ist, ist das sie stimmt ?!
Und das ist genau so arrogant, weil sie absolut ist, und keinen Raum für Diskussion lässt.
PI hat ja als erstes eingeworfen "es zählt, was das Konstrukt ausdrücken soll". Und primär drückt sowohl "++i" als auch "i++" aus "erhöhe i um eins". Der Rest fällt bös gesagt unter Nebeneffekt, wenngleich er hier nicht ganz so unbedeutend ist. Nach PIs Darstellung erhöht ++i nur, i++ erhöht und gibt das alte i zurück - dass ++i auch etwas zurückgibt scheint für ihn Nebensache.
-
Zeus schrieb:
Aber i++ evaluiert im Ausdruck mit i und nach der Anweisung mit i+1, während ++i im Ausdruck und nach der Anweisung mit i+1 evaluieren
Es geht hier - wie schon mehrmals erwähnt wurde - um das alleinstehende Inkrementieren. In den anderen Fällen ist doch schon durch den Kontext die Wahl von Prä- oder Postinkrement fest vorgegeben.
-
7xCore schrieb:
Was ist dan der Aussage von PI arrogant?Das einzige was an ihr ist, ist das sie stimmt ?!
Er sieht seine Meinung als das Mass aller Dinge.
Er setzt "nicht einer Meinung mit ihm sein" mit "ihn nicht verstanden haben" gleich.
Ne, natürlich gar nicht arrogant.
-
@Zeus: Das ist mir schon klar. Ich wollte nur darauf hinaus, dass '"Wofür wird hier der Rückgabewert gebraucht"' für beide Operatoren gilt, was PI's Aussage nutzlos macht.
Und jetzt halte ich mich aus der Diskussion lieber raus, weil die zu nichts Sinnvollem mehr führt.
-
314159265358979 schrieb:
Ich freue mich schon auf Flames ala "Du siehst deine Meinung als einzig richtige an blafu",
Ja, weil es genau so ist.
aber ist nunmal so, dass meine die einzig logisch sinnvolle und begründbare ist.
Was du nicht verstehst, ist, dass es im Endeffekt egal ist wie man's schreibt.
Aussagen wie "jeder der i++ schreibt ist blah" sind einfach nur Schwachsinn.Du hast keine Ahnung von der Praxis, mutest dir aber permanent an alles besser beurteilen zu können als *alle anderen hier*.
Bist du wirklich so daneben dass du nicht merkst, dass das nicht sein kann? Meinst du echt hier im Forum wären nur lauter Vollidioten die trotz 20+ Jahren mehr Lebenserfahrung als du und der zig oder hundertfachen Projekterfahrung (in der Praxis) nicht fähig wären ein paar Dinge besser einzuschätzen als du?
-
314159265358979 schrieb:
Kein einziger von euch hat verstanden, worauf ich eigentlich hinaus will, obwohl es doch so offensichtlich ist. Wenn man i++ sieht, sollte der erste Gedanke sein "Wofür wird hier der Rückgabewert gebraucht". Zumindest bei mir ist das so. Wenn ihr nicht so denkt, ist das euer Fehler.
Ich freue mich schon auf Flames ala "Du siehst deine Meinung als einzig richtige an blafu", aber ist nunmal so, dass meine die einzig logisch sinnvolle und begründbare ist.
Das kann ja sein. Nur geht der Vorwurf, man sei nicht schlau genug, um etwas zu verstehen, ins Leere.
Umgekehrt wird ein Schuh draus: du solltest dich auf unser Niveau herunterdenken, damit eine produktive Diskussion entstehen kann.
-
Michael E. schrieb:
Es geht hier - wie schon mehrmals erwähnt wurde - um das alleinstehende Inkrementieren.
Ach, dann. Wie Otze schon sagte, wird das ja wegoptimiert, also ist es ja im Endeffekt bei der Schleife vollständig Egal. Ich dachte, dass eine Funktion ala
const myclass operator++(int) { return ++*this - 1; }
in einer Schleife zusätzlichen Kopieraufwand bedeutet.
-
@hacker: So wie Du geschrieben hast, ist es richtig. Prä-Inc gibt eine Referenz zurück, Post-Inc eine Kopie. Geht auch nicht anders, da bei Post-Inc ja eine Änderung stattfindet, die beim zurück Gegebenen nicht sichbar sein soll.
-
Ein sehr dubioses Thema
-
314159265358979 schrieb:
Kein einziger von euch hat verstanden, worauf ich eigentlich hinaus will, obwohl es doch so offensichtlich ist. Wenn man i++ sieht, sollte der erste Gedanke sein "Wofür wird hier der Rückgabewert gebraucht". Zumindest bei mir ist das so. Wenn ihr nicht so denkt, ist das euer Fehler.
Ich hab schon lange verstanden worauf du hinaus willst und frage mich dann immer, was ist eigentlich der Rückgabewert von i++ bei int und vorallem welcher Hansel hat den ++ Operator für int überladen?
-
7xCore schrieb:
Was ist dan der Aussage von PI arrogant?
Es ist einfach lächerlich, wie toll er sich vor kommt, nur weil er ein bisschen was bei solchen Anfängerthemen weiß. Sobald er bei einem komplizierteren Thema mitreden will, merkt man, dass er garkeine Erfahrung hat.
-
Ach, mit hohem IQ kann man nen zunächst niedrigen EQ durch bewusstes Üben super verbessern. Das bekommt er sicher noch hin.
-
Solche Threads sind immer wieder genial
-
Meine Meinung:
Wenn der Rückgabewert nicht gebraucht wird (unsere Situation) gibt's nie ne situation bei der postfix schneller ist als präfix. Wenn man sichs nachdenken also sparen will ist immer präfix die bessere Variante. Auch kann der compiler nicht unbedingt jeden operator++ call inlinen, vorallem wenn die Funktion größer ist, meines wissens erhöht das mit der code-größe auch die misses vom code cache, und würde irgendwann das ganze langsamer machen.Weiter, um Stroustrup sinngemäß wiederzugeben, könnte es sein das operator++ gar nicht implementiert wird, weil es deutlich langsamer ist - damit fängt man sich nicht nur inkonsistenzen im coding stil ein, sondern falls man mal von einer Klasse auf eine andere wechseln will, muss man durch den code gehen und alle fälle von postfix zu präfix ändern. Eine Sache die man sich gespart hätte, hätte man gleich präfix genommen.
Letztendlich ist der einzige "Vorteil" von postfix nur, das es einige schon immer so gemacht haben. Weil dass es tatsächlich besser sei, dafür argumentiert hier ja nichtmal jemand.
-
afaik ist PI schwul, was seinen Niedrig-IQ erklärt
-
Hakker schrieb:
afaik ist PI schwul, was seinen Niedrig-IQ erklärt
Nö wieso, er hat einen prof. getesteten IQ von 133 (meinte er mal), also seh ich das nicht ein. Außerdem bist du geistlich weit zurückgeblieben, wenn du so untolerant gegenüber homosexuellen bist (das ist nähmlich 6. Klasse, "Hey du Schwuchtel!"). Wahrscheinlich bist du selbst schwul. Und jetzt lass es bitte, das ist OT und pumuckl kommt dann wieder an und hält uns eine Predigt über Moral in Foren (womit er prinzipiell Recht hat).