In C # Was ist der Unterschied zwischen myInt ++ und ++ myInt?

7

Mir fällt es schwer zu verstehen, was der Unterschied zwischen dem Inkrementieren einer Variablen in C # ist:

%Vor%

und

%Vor%

Wann würde es je darauf ankommen, welche Sie verwenden?

Ich gebe voteCount ++ für die beste Antwort. Oder sollte ich es geben ++ voteCount ...

    
Micah 12.01.2009, 21:11
quelle

11 Antworten

52

Es gibt keinen Unterschied, wenn es einzeln geschrieben wird (wie gezeigt) - in beiden Fällen wird myInt um 1 erhöht.

Aber es gibt einen Unterschied, wenn Sie es in einem Ausdruck verwenden, z. etwas wie das:

%Vor%

Im ersten Fall wird myInt erhöht und der neue / inkrementierte Wert an MyFunction () übergeben. Im zweiten Fall wird der alte Wert von myInt an MyFunction () übergeben (aber myInt wird immer noch inkrementiert, bevor die Funktion aufgerufen wird).

Ein anderes Beispiel ist das:

%Vor%

BTW: Wie Don in einem Kommentar darauf hingewiesen hat, gelten die gleichen Regeln auch für Dekrement-Operationen, und die Die korrekte Terminologie für diese Operationen lautet:

%Vor%

Als Jon Skeet weist darauf hin:

  

Andere haben gezeigt, wo es a macht   Unterschied, und habe das als kommentiert   eine einzige Aussage macht es nicht   Unterschied.

     

Ich möchte hinzufügen, dass es fast ist   immer eine schlechte Idee, es dort zu verwenden   macht einen Unterschied. Ich vermute es   kann manchmal sein, wo es mehr ist   lesbar für Code wie:

%Vor%      

als:

%Vor%      

... aber sie sind sehr selten! Das   Letztere dieser beiden Proben macht die   sofort kristallklar bestellen -   Ersteres erfordert ein wenig Nachdenken   (jedenfalls zu meinem armen Gehirn). Denk an   die Lesbarkeit zuerst.

    
M4N 23.05.2017, 12:09
quelle
11

Andere haben gezeigt, wo es einen Unterschied macht, und haben festgestellt, dass es als eine einzige Aussage keinen Unterschied macht.

Ich möchte hinzufügen, dass es fast immer eine schlechte Idee ist, es dort einzusetzen, wo es einen Unterschied macht. Ich vermute, dass kann manchmal sein, wo es besser lesbar ist, Code zu haben wie:

%Vor%

als:

%Vor%

... aber sie sind sehr selten! Die letztere der beiden Proben macht die Ordnung sofort klar - die erstere erfordert ein wenig Nachdenken (jedenfalls zu meinem armen Gehirn). Denken Sie zuerst an die Lesbarkeit.

    
Jon Skeet 12.01.2009 21:18
quelle
9

Es geschieht nicht, außer es ist in einem Ausdruck, d. h.

%Vor%

unterscheidet sich von:

%Vor%

Die erste weist 1 x zu, da die Zuweisung vor dem Inkrement erfolgt.

Die zweite weist 2 x zu, weil die Zuweisung nach dem Inkrement erfolgt.

    
frankodwyer 12.01.2009 21:16
quelle
6
___ answer437047 ___

Es geschieht nicht, außer es ist in einem Ausdruck, d. h.

%Vor%

unterscheidet sich von:

%Vor%

Die erste weist 1 x zu, da die Zuweisung vor dem Inkrement erfolgt.

Die zweite weist 2 x zu, weil die Zuweisung nach dem Inkrement erfolgt.

    
___ qstntxt ___

Mir fällt es schwer zu verstehen, was der Unterschied zwischen dem Inkrementieren einer Variablen in C # ist:

%Vor%

und

%Vor%

Wann würde es je darauf ankommen, welche Sie verwenden?

Ich gebe voteCount ++ für die beste Antwort. Oder sollte ich es geben ++ voteCount ...

    
___ answer437058 ___

Andere haben gezeigt, wo es einen Unterschied macht, und haben festgestellt, dass es als eine einzige Aussage keinen Unterschied macht.

Ich möchte hinzufügen, dass es fast immer eine schlechte Idee ist, es dort einzusetzen, wo es einen Unterschied macht. Ich vermute, dass kann manchmal sein, wo es besser lesbar ist, Code zu haben wie:

%Vor%

als:

%Vor%

... aber sie sind sehr selten! Die letztere der beiden Proben macht die Ordnung sofort klar - die erstere erfordert ein wenig Nachdenken (jedenfalls zu meinem armen Gehirn). Denken Sie zuerst an die Lesbarkeit.

    
___ antwort437035 ___

Bei der Zuweisung oder den Ausdrücken, zum Beispiel

%Vor%

Dies kann auch in Ausdrücken wie for-Schleifen oder if-Anweisungen verwendet werden. Nehmen Sie zum Beispiel die folgende Vorgehensweise, wenn Suche 0 und Zählung 3 ist.

%Vor%

ergibt die Ausgaben von 1, 2 und 3 für die Suche und die folgenden

%Vor%

Ergebnisse in 1 und 2 für die Suche. Also erhöht ++ myInt myInt, bevor sein Wert ausgewertet wird, wobei myInt ++ nach der Auswertung inkrementiert wird.

    
___ answer437036 ___

Es gibt keinen Unterschied, wenn es einzeln geschrieben wird (wie gezeigt) - in beiden Fällen wird myInt um 1 erhöht.

Aber es gibt einen Unterschied, wenn Sie es in einem Ausdruck verwenden, z. etwas wie das:

%Vor%

Im ersten Fall wird myInt erhöht und der neue / inkrementierte Wert an MyFunction () übergeben. Im zweiten Fall wird der alte Wert von myInt an MyFunction () übergeben (aber myInt wird immer noch inkrementiert, bevor die Funktion aufgerufen wird).

Ein anderes Beispiel ist das:

%Vor%

BTW: Wie Don in einem Kommentar darauf hingewiesen hat, gelten die gleichen Regeln auch für Dekrement-Operationen, und die Die korrekte Terminologie für diese Operationen lautet:

%Vor%

Als Jon Skeet weist darauf hin:

  

Andere haben gezeigt, wo es a macht   Unterschied, und habe das als kommentiert   eine einzige Aussage macht es nicht   Unterschied.

     

Ich möchte hinzufügen, dass es fast ist   immer eine schlechte Idee, es dort zu verwenden   macht einen Unterschied. Ich vermute es   kann manchmal sein, wo es mehr ist   lesbar für Code wie:

%Vor%      

als:

%Vor%      

... aber sie sind sehr selten! Das   Letztere dieser beiden Proben macht die   sofort kristallklar bestellen -   Ersteres erfordert ein wenig Nachdenken   (jedenfalls zu meinem armen Gehirn). Denk an   die Lesbarkeit zuerst.

    
___ antwort437123 ___

myInt ++ (4 CPU-Anweisungen)

%Vor%

++ myInt (3 CPU-Anweisungen)

%Vor%     
___ answer437038 ___

Es ist ein Unterschied, wenn Sie

machen %Vor%

aber wenn Sie

tun %Vor%     
___ answer437046 ___

Er bestimmt, wann das Ergebnis für diese Operation zurückgegeben wird.

Hier ist ein Beispiel aus der MSDN-Site :

%Vor%

Und die Ausgabe:

%Vor%     
___ answer437052 ___

Der pre-fix-Operator ++ myInt ist eine Möglichkeit, Zeilen zu reduzieren: Erhöhen Sie die Variable, bevor Sie sie an eine andere Stelle übergeben. Es ist auch eine gute Möglichkeit, die Lesbarkeit zu reduzieren, da es ungewöhnlich ist.

%Vor%

vs.

%Vor%

Für mich ist das zweite viel einfacher zu lesen.

    
___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ tag123syntax ___ Syntax bezieht sich auf die eigentlichen Sprachelemente und Symbole selbst. Fragen sollten als Syntax gekennzeichnet werden, wenn sich die Frage spezifisch und fast vollständig auf die Syntax bezieht. Dieses Tag sollte mit einem bestimmten Sprach-Tag verwendet werden ___ answer437063 ___

++ myInt fügt eine Zeile zu myInt hinzu, bevor die entsprechende Zeile ausgeführt wird, myInt ++ erledigt dies anschließend.

Beispiele:

%Vor%     
___ answer437044 ___

Wenn Sie zum Beispiel so etwas tun:

%Vor%

Dies wird 6 ausdrucken.

%Vor%

gibt 5 aus;

Grundsätzlich verwendet ++ myInt Inkrement FIRST verwendet die Variable SECOND. myInt ++ ist das Gegenteil.

    
___ antwort437135 ___

Ich denke, es ist am einfachsten, die Reihenfolge der Evaluierung und Modifikation zu verstehen.

  • Der Postfix-Operator (x ++) wertet zuerst und ändert zuletzt.
  • Der Präfixoperator (++ x) ändert zuerst und wertet zuletzt aus.

(die Reihenfolge der Operationen ist in der getippten Reihenfolge des Operators und der Variablen ersichtlich)

i.e. Wenn er in einem Ausdruck verwendet wird, wertet der Postfix-Operator den aktuellen Wert der Variablen aus und verwendet ihn im Ausdruck (eine Rückgabeanweisung oder einen Methodenaufruf), bevor er den Operator anwendet. Mit dem Präfix-Operator ist es umgekehrt.

    
___ qstnhdr ___ In C # Was ist der Unterschied zwischen myInt ++ und ++ myInt? ___
ng. 12.01.2009 21:14
quelle
4
___ answer437047 ___

Es geschieht nicht, außer es ist in einem Ausdruck, d. h.

%Vor%

unterscheidet sich von:

%Vor%

Die erste weist 1 x zu, da die Zuweisung vor dem Inkrement erfolgt.

Die zweite weist 2 x zu, weil die Zuweisung nach dem Inkrement erfolgt.

    
___ qstntxt ___

Mir fällt es schwer zu verstehen, was der Unterschied zwischen dem Inkrementieren einer Variablen in C # ist:

%Vor%

und

%Vor%

Wann würde es je darauf ankommen, welche Sie verwenden?

Ich gebe voteCount ++ für die beste Antwort. Oder sollte ich es geben ++ voteCount ...

    
___ answer437058 ___

Andere haben gezeigt, wo es einen Unterschied macht, und haben festgestellt, dass es als eine einzige Aussage keinen Unterschied macht.

Ich möchte hinzufügen, dass es fast immer eine schlechte Idee ist, es dort einzusetzen, wo es einen Unterschied macht. Ich vermute, dass kann manchmal sein, wo es besser lesbar ist, Code zu haben wie:

%Vor%

als:

%Vor%

... aber sie sind sehr selten! Die letztere der beiden Proben macht die Ordnung sofort klar - die erstere erfordert ein wenig Nachdenken (jedenfalls zu meinem armen Gehirn). Denken Sie zuerst an die Lesbarkeit.

    
___ antwort437035 ___

Bei der Zuweisung oder den Ausdrücken, zum Beispiel

%Vor%

Dies kann auch in Ausdrücken wie for-Schleifen oder if-Anweisungen verwendet werden. Nehmen Sie zum Beispiel die folgende Vorgehensweise, wenn Suche 0 und Zählung 3 ist.

%Vor%

ergibt die Ausgaben von 1, 2 und 3 für die Suche und die folgenden

%Vor%

Ergebnisse in 1 und 2 für die Suche. Also erhöht ++ myInt myInt, bevor sein Wert ausgewertet wird, wobei myInt ++ nach der Auswertung inkrementiert wird.

    
___ answer437036 ___

Es gibt keinen Unterschied, wenn es einzeln geschrieben wird (wie gezeigt) - in beiden Fällen wird myInt um 1 erhöht.

Aber es gibt einen Unterschied, wenn Sie es in einem Ausdruck verwenden, z. etwas wie das:

%Vor%

Im ersten Fall wird myInt erhöht und der neue / inkrementierte Wert an MyFunction () übergeben. Im zweiten Fall wird der alte Wert von myInt an MyFunction () übergeben (aber myInt wird immer noch inkrementiert, bevor die Funktion aufgerufen wird).

Ein anderes Beispiel ist das:

%Vor%

BTW: Wie Don in einem Kommentar darauf hingewiesen hat, gelten die gleichen Regeln auch für Dekrement-Operationen, und die Die korrekte Terminologie für diese Operationen lautet:

%Vor%

Als Jon Skeet weist darauf hin:

  

Andere haben gezeigt, wo es a macht   Unterschied, und habe das als kommentiert   eine einzige Aussage macht es nicht   Unterschied.

     

Ich möchte hinzufügen, dass es fast ist   immer eine schlechte Idee, es dort zu verwenden   macht einen Unterschied. Ich vermute es   kann manchmal sein, wo es mehr ist   lesbar für Code wie:

%Vor%      

als:

%Vor%      

... aber sie sind sehr selten! Das   Letztere dieser beiden Proben macht die   sofort kristallklar bestellen -   Ersteres erfordert ein wenig Nachdenken   (jedenfalls zu meinem armen Gehirn). Denk an   die Lesbarkeit zuerst.

    
___ antwort437123 ___

myInt ++ (4 CPU-Anweisungen)

%Vor%

++ myInt (3 CPU-Anweisungen)

%Vor%     
___ answer437038 ___

Es ist ein Unterschied, wenn Sie

machen %Vor%

aber wenn Sie

tun %Vor%     
___ answer437046 ___

Er bestimmt, wann das Ergebnis für diese Operation zurückgegeben wird.

Hier ist ein Beispiel aus der MSDN-Site :

%Vor%

Und die Ausgabe:

%Vor%     
___ answer437052 ___

Der pre-fix-Operator ++ myInt ist eine Möglichkeit, Zeilen zu reduzieren: Erhöhen Sie die Variable, bevor Sie sie an eine andere Stelle übergeben. Es ist auch eine gute Möglichkeit, die Lesbarkeit zu reduzieren, da es ungewöhnlich ist.

%Vor%

vs.

%Vor%

Für mich ist das zweite viel einfacher zu lesen.

    
___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ tag123syntax ___ Syntax bezieht sich auf die eigentlichen Sprachelemente und Symbole selbst. Fragen sollten als Syntax gekennzeichnet werden, wenn sich die Frage spezifisch und fast vollständig auf die Syntax bezieht. Dieses Tag sollte mit einem bestimmten Sprach-Tag verwendet werden ___ answer437063 ___

++ myInt fügt eine Zeile zu myInt hinzu, bevor die entsprechende Zeile ausgeführt wird, myInt ++ erledigt dies anschließend.

Beispiele:

%Vor%     
___ answer437044 ___

Wenn Sie zum Beispiel so etwas tun:

%Vor%

Dies wird 6 ausdrucken.

%Vor%

gibt 5 aus;

Grundsätzlich verwendet ++ myInt Inkrement FIRST verwendet die Variable SECOND. myInt ++ ist das Gegenteil.

    
___ antwort437135 ___

Ich denke, es ist am einfachsten, die Reihenfolge der Evaluierung und Modifikation zu verstehen.

  • Der Postfix-Operator (x ++) wertet zuerst und ändert zuletzt.
  • Der Präfixoperator (++ x) ändert zuerst und wertet zuletzt aus.

(die Reihenfolge der Operationen ist in der getippten Reihenfolge des Operators und der Variablen ersichtlich)

i.e. Wenn er in einem Ausdruck verwendet wird, wertet der Postfix-Operator den aktuellen Wert der Variablen aus und verwendet ihn im Ausdruck (eine Rückgabeanweisung oder einen Methodenaufruf), bevor er den Operator anwendet. Mit dem Präfix-Operator ist es umgekehrt.

    
___ qstnhdr ___ In C # Was ist der Unterschied zwischen myInt ++ und ++ myInt? ___
yogman 12.01.2009 21:43
quelle
3

Es ist ein Unterschied, wenn Sie

machen %Vor%

aber wenn Sie

tun %Vor%     
mmmmmmmm 12.01.2009 21:15
quelle
3

Der pre-fix-Operator ++ myInt ist eine Möglichkeit, Zeilen zu reduzieren: Erhöhen Sie die Variable, bevor Sie sie an eine andere Stelle übergeben. Es ist auch eine gute Möglichkeit, die Lesbarkeit zu reduzieren, da es ungewöhnlich ist.

%Vor%

vs.

%Vor%

Für mich ist das zweite viel einfacher zu lesen.

    
jcollum 12.01.2009 21:17
quelle
3

Er bestimmt, wann das Ergebnis für diese Operation zurückgegeben wird.

Hier ist ein Beispiel aus der MSDN-Site :

%Vor%

Und die Ausgabe:

%Vor%     
jamesmillerio 12.01.2009 21:16
quelle
3
___ answer437047 ___

Es geschieht nicht, außer es ist in einem Ausdruck, d. h.

%Vor%

unterscheidet sich von:

%Vor%

Die erste weist 1 x zu, da die Zuweisung vor dem Inkrement erfolgt.

Die zweite weist 2 x zu, weil die Zuweisung nach dem Inkrement erfolgt.

    
___ qstntxt ___

Mir fällt es schwer zu verstehen, was der Unterschied zwischen dem Inkrementieren einer Variablen in C # ist:

%Vor%

und

%Vor%

Wann würde es je darauf ankommen, welche Sie verwenden?

Ich gebe voteCount ++ für die beste Antwort. Oder sollte ich es geben ++ voteCount ...

    
___ answer437058 ___

Andere haben gezeigt, wo es einen Unterschied macht, und haben festgestellt, dass es als eine einzige Aussage keinen Unterschied macht.

Ich möchte hinzufügen, dass es fast immer eine schlechte Idee ist, es dort einzusetzen, wo es einen Unterschied macht. Ich vermute, dass kann manchmal sein, wo es besser lesbar ist, Code zu haben wie:

%Vor%

als:

%Vor%

... aber sie sind sehr selten! Die letztere der beiden Proben macht die Ordnung sofort klar - die erstere erfordert ein wenig Nachdenken (jedenfalls zu meinem armen Gehirn). Denken Sie zuerst an die Lesbarkeit.

    
___ antwort437035 ___

Bei der Zuweisung oder den Ausdrücken, zum Beispiel

%Vor%

Dies kann auch in Ausdrücken wie for-Schleifen oder if-Anweisungen verwendet werden. Nehmen Sie zum Beispiel die folgende Vorgehensweise, wenn Suche 0 und Zählung 3 ist.

%Vor%

ergibt die Ausgaben von 1, 2 und 3 für die Suche und die folgenden

%Vor%

Ergebnisse in 1 und 2 für die Suche. Also erhöht ++ myInt myInt, bevor sein Wert ausgewertet wird, wobei myInt ++ nach der Auswertung inkrementiert wird.

    
___ answer437036 ___

Es gibt keinen Unterschied, wenn es einzeln geschrieben wird (wie gezeigt) - in beiden Fällen wird myInt um 1 erhöht.

Aber es gibt einen Unterschied, wenn Sie es in einem Ausdruck verwenden, z. etwas wie das:

%Vor%

Im ersten Fall wird myInt erhöht und der neue / inkrementierte Wert an MyFunction () übergeben. Im zweiten Fall wird der alte Wert von myInt an MyFunction () übergeben (aber myInt wird immer noch inkrementiert, bevor die Funktion aufgerufen wird).

Ein anderes Beispiel ist das:

%Vor%

BTW: Wie Don in einem Kommentar darauf hingewiesen hat, gelten die gleichen Regeln auch für Dekrement-Operationen, und die Die korrekte Terminologie für diese Operationen lautet:

%Vor%

Als Jon Skeet weist darauf hin:

  

Andere haben gezeigt, wo es a macht   Unterschied, und habe das als kommentiert   eine einzige Aussage macht es nicht   Unterschied.

     

Ich möchte hinzufügen, dass es fast ist   immer eine schlechte Idee, es dort zu verwenden   macht einen Unterschied. Ich vermute es   kann manchmal sein, wo es mehr ist   lesbar für Code wie:

%Vor%      

als:

%Vor%      

... aber sie sind sehr selten! Das   Letztere dieser beiden Proben macht die   sofort kristallklar bestellen -   Ersteres erfordert ein wenig Nachdenken   (jedenfalls zu meinem armen Gehirn). Denk an   die Lesbarkeit zuerst.

    
___ antwort437123 ___

myInt ++ (4 CPU-Anweisungen)

%Vor%

++ myInt (3 CPU-Anweisungen)

%Vor%     
___ answer437038 ___

Es ist ein Unterschied, wenn Sie

machen %Vor%

aber wenn Sie

tun %Vor%     
___ answer437046 ___

Er bestimmt, wann das Ergebnis für diese Operation zurückgegeben wird.

Hier ist ein Beispiel aus der MSDN-Site :

%Vor%

Und die Ausgabe:

%Vor%     
___ answer437052 ___

Der pre-fix-Operator ++ myInt ist eine Möglichkeit, Zeilen zu reduzieren: Erhöhen Sie die Variable, bevor Sie sie an eine andere Stelle übergeben. Es ist auch eine gute Möglichkeit, die Lesbarkeit zu reduzieren, da es ungewöhnlich ist.

%Vor%

vs.

%Vor%

Für mich ist das zweite viel einfacher zu lesen.

    
___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ tag123syntax ___ Syntax bezieht sich auf die eigentlichen Sprachelemente und Symbole selbst. Fragen sollten als Syntax gekennzeichnet werden, wenn sich die Frage spezifisch und fast vollständig auf die Syntax bezieht. Dieses Tag sollte mit einem bestimmten Sprach-Tag verwendet werden ___ answer437063 ___

++ myInt fügt eine Zeile zu myInt hinzu, bevor die entsprechende Zeile ausgeführt wird, myInt ++ erledigt dies anschließend.

Beispiele:

%Vor%     
___ answer437044 ___

Wenn Sie zum Beispiel so etwas tun:

%Vor%

Dies wird 6 ausdrucken.

%Vor%

gibt 5 aus;

Grundsätzlich verwendet ++ myInt Inkrement FIRST verwendet die Variable SECOND. myInt ++ ist das Gegenteil.

    
___ antwort437135 ___

Ich denke, es ist am einfachsten, die Reihenfolge der Evaluierung und Modifikation zu verstehen.

  • Der Postfix-Operator (x ++) wertet zuerst und ändert zuletzt.
  • Der Präfixoperator (++ x) ändert zuerst und wertet zuletzt aus.

(die Reihenfolge der Operationen ist in der getippten Reihenfolge des Operators und der Variablen ersichtlich)

i.e. Wenn er in einem Ausdruck verwendet wird, wertet der Postfix-Operator den aktuellen Wert der Variablen aus und verwendet ihn im Ausdruck (eine Rückgabeanweisung oder einen Methodenaufruf), bevor er den Operator anwendet. Mit dem Präfix-Operator ist es umgekehrt.

    
___ qstnhdr ___ In C # Was ist der Unterschied zwischen myInt ++ und ++ myInt? ___
Ladida 12.01.2009 21:46
quelle
2

++ myInt fügt eine Zeile zu myInt hinzu, bevor die entsprechende Zeile ausgeführt wird, myInt ++ erledigt dies anschließend.

Beispiele:

%Vor%     
Andrew G. Johnson 12.01.2009 21:21
quelle
0

Wenn Sie zum Beispiel so etwas tun:

%Vor%

Dies wird 6 ausdrucken.

%Vor%

gibt 5 aus;

Grundsätzlich verwendet ++ myInt Inkrement FIRST verwendet die Variable SECOND. myInt ++ ist das Gegenteil.

    
BFree 12.01.2009 21:15
quelle

Tags und Links