Wie man die Autoincrement / Autodekrement Eigenschaft in C ++ verwenden

C ++ Programmierer verwenden sehr häufig die autoincrement ++ oder die Autodekrement - - Betreiber mit Schleifen, die etwas zählen. Beachten Sie aus dem folgenden Ausschnitt aus dem extrahierten WhileDemo Beispiel, dass das Programm mit Zuordnung und Subtraktion Aussagen über die Schleifenzählung dekrementiert, wie folgt aus:

// Jetzt Schleife, dass viele timeswhile (nLoopCount> 0) {nLoopCount = nLoopCount - 1-cout lt; lt; "Nur" lt; lt; nLoopCountlt; lt; "Schleifen zu gehen" lt; lt; endl-}

Eine kompaktere Version verwendet die Autodekrement Feature, das tut, was Sie kann sich gut vorstellen:

während (nLoopCount> 0) {nLoopCount --- cout lt; lt; "Nur" lt; lt; nLoopCountlt; lt; "Schleifen zu gehen" lt; lt; endl-}

Die Logik in dieser Version ist die gleiche wie in dem Original. Der einzige Unterschied ist die Art und Weise, nLoopCount dekrementiert.

Da die Autodekrement beide dekrementiert sein Argument und seinen Wert zurückgibt, kann die Dekrementoperation mit der kombiniert werden während Schleife. Insbesondere ist die folgende Version der kleinste Schleife noch:

während (nLoopCount--> 0) {cout lt; lt; "Nur" lt; lt; nLoopCountlt; lt; "Schleifen zu gehen" lt; lt; endl-}

Glaub es oder nicht, nLoopcount--> 0 ist die Version, die die meisten Programmierer C ++ verwenden würde. Es ist nicht, dass C ++ Programmierer wie nett zu sein (obwohl sie es tun). In der Tat, die kompaktere Version (die die Autoinkrement oder Autodekrement Funktion in der logischen Vergleich bettet) ist leichter zu lesen, vor allem, wie Sie Erfahrungen sammeln.

Beide nLoopCount-- und --nLoopCount Ausdrücke Dekrement nLoopCount. Der frühere Ausdruck, jedoch gibt den Wert nLoopCount bevor dieser Ausdruck ist decremented- tut dies nach verringert wird.

Wie oft sollte die Autodekrement Version WhileDemo ausgeführt wird, wenn der Benutzer eine Schleifenzählung von 1 eintritt? Wenn Sie die Pre-Dekrement-Version verwenden, wird der Wert von --nLoopCount 0 ist, und der Körper der Schleife nie eingegeben. Mit der Post-Dekrement-Version, der Wert von nLoopCount 1 ist, und die Steuerung geht in den Loop.

Hüten Sie sich vor zu denken, dass die Version des Programms mit dem Autodekrement Befehl ausführt, schneller als die einfache # 147-- 1 # 148- Version (da es enthält weniger Aussagen). Sie führt wahrscheinlich genau die gleichen. Moderne Compiler sind gut darin, die Anzahl der Maschinensprache Anweisungen immer auf ein Minimum ab, unabhängig davon, welche der Abnahme Anweisungen gezeigt hier Sie tatsächlich nutzen.

Menü