Scambio valori variabili

stellacometa
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.. :wink:

Risposte
david_e1
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++:

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...

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.

codino75
"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.

david_e1
Veramente geniale... non ci avrei mai pensato io!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.