El misterio de a++ + ++a: por qué el mismo código C da resultados diferentes

Fuentes: int a = 5; a = a++ + ++a; a = ?
El misterio de a++ + ++a: por qué el mismo código C da resultados diferentes
Imagen generada con IA

El contenido explora el comportamiento indefinido (UB) en expresiones C/C++ que combinan operadores de incremento pre (++a) y post (a++). El caso central analizado es a = a++ + ++a. Se demuestra teóricamente cómo existen múltiples posibilidades de evaluación: el orden de captura de valores y cuándo se ejecuta el post-incremento puede variar, generando resultados diferentes (11, 12 o 13). Se presentan experimentos con más de 15 compiladores (gcc, clang, MSVC, Java, PHP, C#), mostrando cómo cada uno produce resultados distintos. Notablemente, en C# este comportamiento está bien definido por especificación (§7.3): los operandos se evalúan de izquierda a derecha. El artículo sirve como advertencia sobre por qué estas expresiones deben evitarse en código production.