For Schleife post/pre increment
-
Hallo,
bei for schleifen dürfte es ja einen Unterschied machen, ob ich schreibe:for(i=0,i<=10,i++)for(i=0,i<=10,++i). Wenn es einen Unterschied macht. Was verwendet man da am besten post oder pre increment?
-
Wenn es einen Unterschied macht: Pre.
-
Gut ich habs gerade mal probiert es macht keinen Unterschied, warum aber?
-
es kann einen kleinen Unterschied machen, da beim post-inkrement zuerst eine Kopie angelegt werden muss. Das dürfte aber keinen wirklichen Einfluss auf den Programmfluss haben (wenn es nicht eh rausoptimiert wird)
Da du den Wert nicht verarbeitest, kannst du nehmen, was dir besser gefällt.
-
Pauli. schrieb:
Gut ich habs gerade mal probiert es macht keinen Unterschied, warum aber?
Weil das inkrementieren am Ende der Schleife passiert.
Sprichfor(int i=0;i<10;i++){ ... }wie:
for(int i=0;i<10;){ ... i++; }
-
Macht bei eingebauten Datentypen keinen Unterschied. Bei Benutzerdefinierten (z.B. iteratoren) wird halt beim Postinkrement erst eine Kopie angelegt, dann der Iterator erhöht und dann die Kopie zurückgegeben. Mit Präinkrement spart man sich die Kopie.
Da man gern Gewohnheitstier ist und nicht drüber stolpern mag wenn in jeder zweiten Schleife der Prä/Postinkrement sich abwechselt, nimmt man gern allgemein Präinkrement. (Auch wenns, wie gesagt, bei normalen Zählschleifen keinen Performanceunterschied macht)