Sono un po 'confuso su questo codice. Perché il blocco else viene eseguito?
Per favore, spiegalo.
int a=10,b=20;
char x=1,y=0;
if(a,b,x,y){
cout << "A" << endl;
}else{
cout << "B" << endl;
}
In base alla questa pagina Wiki:
In the C and C++ programming languages, the comma operator (represented by the token ,) is a binary operator that evaluates its first operand and discards the result, and then evaluates the second operand and returns this value (and type).
Quindi: if(a,b,x,y){
prenderà in considerazione solo il valore di y
per la parte if
effettiva, che ha un valore di 0
che valuterà a false
, causando così else
parte del codice da eseguire.
EDIT: Detto questo, il codice che hai postato non ha molto senso. L'operatore virgola valuterà e scarterà il risultato (diverso dall'ultimo elemento). Ciò sarebbe utile se fosse necessario concatenare una serie di metodi che dipendono l'uno dall'altro e decidere cosa fare utilizzando il risultato dell'ultima.
Leggi altre domande sui tag c++