Int a = 5; a = a++ + ++a; a =? (2011)
L'article examine un casse-tête sur les incréments préfixés et postfixés en C/C++, montrant que l'expression a = a++ + ++a peut donner 11, 12 ou 13. Il identifie deux comportements indéfinis responsables: l'ordre d'accès à la variable (quel 'a' est lu ou incrémenté en premier) et le moment où l'incrément post-fixé est appliqué ou écrasé. En combinant ces deux UBs l'auteur expose quatre scénarios qui expliquent les trois résultats possibles, et donne des raisonnements pas à pas pour chacun. Une large série d'essais pratiques sur de nombreux compilateurs et langages montre des comportements variés, tandis que Java et C# ont une évaluation définie gauche-à-droite donnant des résultats déterministes. Le billet inclut le code de test, des résultats détaillés, des remarques sur la surcharge d'opérateurs et des remerciements aux contributeurs ayant fourni des mesures.