Quelqu'un peut-il expliquer pourquoi l'opérateur C# ++ fournit différentes sorties en fonction des variables affectées. https://msdn.microsoft.com/en-us/library/36x43w8w.aspxIncrément de préfixe unaire ++ Opérateur Différentes sorties
int x = 0;
int y = x++;
Console.WriteLine($"x: {x}");
Console.WriteLine($"y: {y}");
/*Prints
* x: 1
* y: 0
*/
Ma compréhension est y
est réglé sur x
, qui est (0), puis après la cession de y
; x
est incrémenté de 1;
int x = 0;
x = x++;
Console.WriteLine($"x: {x}");
/*Prints
* x: 0
*/
Pourquoi la même logique ne s'applique pas ici? x
doit être réglé sur x
, qui est 0 puis après l'incrément d'affectation x
par 1 et imprimer 1 au lieu de 0
même pour cet exemple
int x = 0;
x += x++;
Console.WriteLine($"x: {x}");
/*Prints
* x: 0
*/
Un autre exemple
int x = 0;
x += x++ + x++;
Console.WriteLine($"x: {x}");
/*Prints
* x: 1
*/
Semble qu'il y a une logique différente en arrière-plan que je ne comprends pas.
La description détaillée de la façon dont fonctionne l'opérateur ++ (préfixe et postfixe) en C# est ici: http: // stackoverflow.com/a/3346729/1286670 –
@Steve Je ne sais pas si c'était intentionnel ou non mais vous avez changé _ "Unaire Préfixe Incrément' ++ 'Opérateur" _ à _ "Incrément Préfixe Unaire' + 'Opérateur" _ - non une telle chose – MickyD
Je crois que la réponse d'Eric Lippert trouvée par @ Ňuf couvre toutes les préoccupations de cet article. S'il y a quelque chose qui manque encore - s'il vous plaît [modifier] le message et clarifier quelles parties ont besoin d'une explication séparée. Veuillez vous assurer d'écrire un raisonnement exact étape par étape lorsque vous effectuez une modification - vous devriez avoir au plus quelques étapes supplémentaires en plus de 5 opérations fournies par Eric pour ++ pour couvrir toute l'instruction 'x = x ++'. –