Je n'ai pas le temps de rédiger une description détaillée des différences entre C++, C, C# et Java. Je me contenterai de dire que le C# comportement de la pré-et post-incrémentation des opérateurs est entièrement spécifié (single-threaded scénarios; si vous voulez savoir à propos de son atomicité, des garanties sur les observations de lire et d'écrire les commandes multi-processeur de la faiblesse des modèles de mémoire et ainsi de suite, vous êtes sur votre propre à faire de la recherche.) Il n'est pas complètement définie en C et C++; un compilateur a une large latitude de faire ce qu'il lui plaît avec ré-ordonnancement des effets secondaires. Je n'ai jamais utilisé Java donc je ne vais pas spéculer sur ce que Java n'.
Pour plus d'informations sur ce que le C# n', vous devriez lire la spécification C#. Pour un court laps de prendre sur elle, lire ma réponse à cette question:
C#: quelle est la différence entre i++ et ++i?
Pour un effet encore plus courte:
Les sous-expressions en C# expression sont logiquement regroupés par priorité et associativité des opérateurs, et ensuite évalués de gauche à droite , peu importe. (Ainsi, par exemple, A() + B() * C() évalue Un(), alors B(), alors C(). Le fait que la multiplication "vient avant" le plus est sans importance; les sous-expressions sont toujours évaluées de gauche à droite.)
Si l'évaluation d'une sous-expression provoque un effet secondaire en raison d'un pré ou de post-incrémentation sous-expression alors l'effet secondaire se produit immédiatement avant le résultat est produit.