Questa accaduto mentre stavo affrontando un 'Cracking l'intervista Coding' domanda:Java comportamento operatore di assegnazione vs C++
scrivere una funzione per scambiare un numero al posto (cioè, senza variabili temporanee)
ho deciso di scrivere la mia soluzione in Java (perché ho intenzione di usare Java nelle mie interviste di stage.)
mi si avvicinò con una soluzione che ero quasi sicuro era la risposta giusta (perché l'ho fatto in una riga):
public static void main(String args[]) {
int a = 5;
int b = 7;
a = b - a + (b = a);
System.out.println("a: " + a + " b: " + b);
}
Sicuramente, questo codice esegue il risultato desiderato. a == 7
e b == 5
.
Ora ecco la parte divertente.
Questo codice non verrà eseguito in C++, né questa soluzione è nella parte posteriore del libro.
Quindi la mia domanda è: perché la mia soluzione funziona esattamente? Suppongo che Java faccia le cose in modo diverso rispetto ad altre lingue?
Suggerimento: xor ........... –
Penso che (b = a) non restituisca nulla in C++. O forse mi sbaglio, non conosco il C++. – Sweeper
Per java: http://stackoverflow.com/questions/12850676/return-value-of-assignment-operator –