Unterschied ++i, i++ bei for-Schleife?
-
Die Frage ob i++ oder ++i in diesem Fall ist so relevant wie die Frage welche Einrückung sich warum durchgesetzt hat. Sie ruft allenfalls Missionare des "guten Stils" um ihre Weisheit kundzutun.
cooky451 schrieb:
Warum aber hat sich dann doch irgendwie i++ eingebürgert?
Würde ich schon fast als schlechten Stil ansehen..
qed
-
Tim schrieb:
qed
Dafür, dass es fast 10 Minuten nach meinem Post kam, fand ich's nicht mehr so beeindruckend.
-
Ich bin hier leider in einer temporalen Anomalie namens "Arbeit" gefangen
-
Die Prefix-Variante ist ein Hinweis für den Compiler zur Geschwindigkeitsoptimierung. (Der kann etwas diesbezüglich machen, kann es auch bleiben lassen). Bei der Prefix-Variante liegt der Wert anschließend eher im Cache für direkt nachfolgende Aktionen als bei Postfix. Interessanter/wirkungsvoller in C++ für nichttriviale Fälle, bei denen kein einfacher Typ vorliegt, sondern irgendwelche Objekte/Iteratoren, wo Prefix/Postfix normalerweise überschrieben ist.
-
Tim schrieb:
Ich bin hier leider in einer temporalen Anomalie namens "Arbeit" gefangen
Dann spare Zeit:
▄
-
Wutz schrieb:
Die Prefix-Variante ist ein Hinweis für den Compiler zur Geschwindigkeitsoptimierung. (Der kann etwas diesbezüglich machen, kann es auch bleiben lassen). Bei der Prefix-Variante liegt der Wert anschließend eher im Cache für direkt nachfolgende Aktionen als bei Postfix.
Wo hast du das denn her? Finde ich nicht plausibel.
-
Na wenn der Wert bei Prefix eher im Cache liegt, dann nehme ich erst recht postfix, da bleibt er dann gleich im Register liegen?
Und die C++-Argumentation ist hier einfach nur off-topic.
-
Ich schreibe auch
i++
. Meine Vermutung ist, dass Postfix bevorzugt wird, weil unserem Denken entspricht. Es heißt ja auch C++ und nicht ++C (auch wenn das wenig mit C zu tun hat). Außerdem schreiben wir immer im deutschen und im Englischen das Subjekt zuerst und erst danach, was damit passieren soll (auf "normale Sätze" bezogen). Z.B.: Stucts werden auch in der Form Parent.Children.Children geschreiben und nicht umgekehrt.
-
Rhombicosidodecahedron schrieb:
im deutschen und im Englischen das Subjekt zuerst und erst danach
Die Sprache schrieb:
{Entleere} [den Kasten] und {fülle} [ihn] dann wieder auf.
Hm..
-
cooky451 schrieb:
Rhombicosidodecahedron schrieb:
im deutschen und im Englischen das Subjekt zuerst und erst danach
Die Sprache schrieb:
{Entleere} [den Kasten] und {fülle} [ihn] dann wieder auf.
Hm..
Das sind keine Subjekte, sondern Objekte. Grundschulstoff!
-
Tim schrieb:
Ich bin hier leider in einer temporalen Anomalie namens "Arbeit" gefangen
für den einen ist es eine anomalie, für den anderen gehört sie zum leben.
*scnr*
-
Bashar schrieb:
Das sind keine Subjekte, sondern Objekte. Grundschulstoff!
(Es bleibt aber natürlich dabei, dass man beim Imperativ erst sagt was und dann womit. (Und C soll ja angeblich eine imperative Sprache sein.))
-
yahendrik schrieb:
Und in Programmiersprachen, in denen der Operator bei benutzerdefinierten Typen überladen werden kann (C++), kann der Unterschied gravierend sein. Beim Postinkrement wird immer ein temporäres Objekt benötigt.
Schlimmer: In C++ können Prä- und Post-Inkrement völlig unabhängig voneinander definiert werden (sollte man aber besser nicht machen, wenn den Code noch jemand verstehen soll ;)).
@Topic: Ich hatte mir während meiner aktiven Zeit die Schreibweise ++i angewöhnt. Aber Regeln von Deutsch auf C abzuleiten halte ich für zweifelhaft. (Aber trotzdem passt "inkrementiere i" in das Schema "entleere den Kasten")