operadores - ¿Qué evaluará i+++i++ en C++ 17?
operadores logicos en c (1)
P0145R3 (PDF) no cambia el orden de evaluación de todas las expresiones. Sólo afecta a un pequeño número de operadores. Y la adición binaria no está en esa lista.
Por lo tanto, el código anterior permanece indefinido.
Parece que estamos recibiendo una nueva generación de "preguntas de entrevista" para C ++ (espero que no, en realidad).
Se sabe que es un comportamiento indefinido antes de C ++ 17, pero ¿estará bien definido a partir de C ++ 17 en adelante?
Dado que en este momento no parece haber un compilador que implemente esta modificación de C ++ 17, ¿puede alguien explicar cuál será, según las reglas de evaluación de expresiones, el valor de x
en el siguiente código?
int i = 0;
int x = i++ + i++;
Alisdair Meredith menciona este ejemplo here en su charla sobre CppCon 2016, pero no me queda del todo claro cuál será el valor final de x
(aunque parece que lo que dice es que será al menos 1).
Obviamente, i
mismo será en ese caso 2 al final de la expresión.