Come altri hanno notato, il comportamento di questo codice è non definito in C/C++. Puoi ottenere qualsiasi risultato.
Il comportamento del codice C# è rigorosamente definite dalla C# standard.
Sicuramente ci deve essere qualche logica per entrambe le lingue per implementarlo in modo diverso?
Bene, supponiamo che stiate progettando C# e desiderate rendere il linguaggio facile da imparare per i programmatori C++. Sceglieresti di copiare l'approccio di C++ a questo problema, cioè lasciarlo indefinito? Vuoi veramente rendere facile agli sviluppatori perfettamente intelligenti scrivere accidentalmente del codice che il compilatore può solo creare un significato per quello che vuole?
I progettisti di C# non credono che il comportamento indefinito delle espressioni semplici sia una buona cosa, e quindi abbiamo definito rigorosamente le espressioni come questo. Non possiamo assolutamente concordare con ciò che ogni compilatore C++ fa perché diversi compilatori C++ danno risultati diversi per questo tipo di codice, e quindi non possiamo essere d'accordo con tutti loro.
Per quanto riguarda il motivo per cui i progettisti di C++ credono che sia meglio lasciare espressioni semplici come questa per avere un comportamento indefinito, beh, dovrete chiedere a uno di loro. Potrei certamente fare alcune congetture, ma quelle sarebbero solo ipotesi plausibili.
Ho scritto un numero di articoli di blog su questo tipo di problema; la mia più recente riguardava quasi esattamente il codice che menzioni qui.Alcuni articoli si potrebbe desiderare di leggere:
Come la progettazione di C# favorisce l'eliminazione di bug sottili:
http://blogs.msdn.com/ericlippert/archive/2007/08/14/c-and-the-pit-of-despair.aspx
Esattamente quello che è il rapporto tra la precedenza, associatività, e l'ordine di esecuzione in C#?
http://blogs.msdn.com/ericlippert/archive/2008/05/23/precedence-vs-associativity-vs-order.aspx
In che ordine fanno gli effetti collaterali di indicizzazione, l'assegnazione e l'incremento accada?
http://blogs.msdn.com/ericlippert/archive/2009/08/10/precedence-vs-order-redux.aspx
Beh, jynx, ragazzi. ;) – hobbs