Scambio valori variabili
Ragazzi volevo sapere se esiste un modo per scambiare i valori di 2 variabili senza utilizzare una terza variabile di supporto...
Grazie a tutti per il "futuro" aiuto..
Grazie a tutti per il "futuro" aiuto..

Risposte
Dubito fortemente che sia possibile: un'area di memoria può contenere un unico valore, per cui l'unico modo per sovrascriverla senza perderne il contenuto è farne una copia su una variabile temporanea. Comunque non c'è nulla di male nell'usare variabili temporanee: a livello di efficienza non cambia praticamente nulla e poi il programmatore medio ne usa inconsapevolmente migliaia inutilmente, senza considerare tutti i memory leak di cui sono stracolmi i programmi.
Ad esempio l'istruzione C++:
si traduce in:
e quindi crea un inutile variabile temporanea. L'istruzione:
sarebbe da preferirgli perchè non crea alcun temporaneo. In un ciclo del tipo:
creaiamo inutilmente 5milioni di volte una variabile ausiliaria... eppure direi che nessuno ci fa più di tanto caso...
Ad esempio l'istruzione C++:
i++;
si traduce in:
int _temp=i; i=i+1; return _temp;
e quindi crea un inutile variabile temporanea. L'istruzione:
++i;
sarebbe da preferirgli perchè non crea alcun temporaneo. In un ciclo del tipo:
for( int i=0; i < 5000000; i++) ...
creaiamo inutilmente 5milioni di volte una variabile ausiliaria... eppure direi che nessuno ci fa più di tanto caso...
Per scambiare il contenuto due variabili numeriche A e B, senza usare una terza variabile di appoggio, si può fare così:
Con altri tipi di variabile, per usare questo artificio, si dovrebbe convertire in un formato numerico.
Naturalmente il tutto è alquanto inefficiente e conviene sempre usare il metodo classico.
A=A+B B=A-B A=A-B
Con altri tipi di variabile, per usare questo artificio, si dovrebbe convertire in un formato numerico.
Naturalmente il tutto è alquanto inefficiente e conviene sempre usare il metodo classico.
"lorven":
Per scambiare il contenuto due variabili numeriche A e B, senza usare una terza variabile di appoggio, si può fare così:
A=A+B B=A-B A=A-B
Con altri tipi di variabile, per usare questo artificio, si dovrebbe convertire in un formato numerico.
Naturalmente il tutto è alquanto inefficiente e conviene sempre usare il metodo classico.
geniale.
Veramente geniale... non ci avrei mai pensato io!