¿Qué está pasando aquí?¿Cuál es la precedencia del operador de coma dentro del operador condicional en C++?
#include <iostream>
using namespace std;
int main(){
int x=0,y=0;
true? ++x, ++y : --x, --y;
cout << "x: " << x << endl;
cout << "y: " << y << endl; //why does y=0 here?
x=0,y=0;
false ? ++x, ++y : --x, --y;
cout << "x: " << x << endl;
cout << "y: " << y << endl;
}
x: 1
y: 0
x: -1
y: -1
El segundo caso parece estar bien. Espero que tanto x como y aumenten a 1 en el primer caso, pero solo se incrementa el operando de la mano izquierda.
Indique el código que realmente se compila; de lo contrario, no me molestaré en ayudarlo –
'++ y' sucede, pero luego' -y' sí. ¿verdad? ++ x, ++ y: --x, --y' se analiza como '(true? ++ x, ++ y: --x), --y' – oldrinb
@AdrianCornish Este código se compila; ¿Lo intentaste? – chrisaycock