Come scambiare i valori tra due variabili in C

Nel linguaggio C per scambiare i valori tra due variabili ci sono due metodi, un metodo classico tramite una terza variabile di appoggio e uno meno conosciuto basato sullo XOR.

Come scambiare valori tra due variabili tramite una terza variabile

Per attuare lo scambio dei valori tra le variabili a e b, creo una terza variabile temporanea c.

Poi assegno alla variabile c il valore della variabile a.

c=a;
a=b;
b=c;

A questo punto assegno alla variabile a il valore della variabile b. Infine, assegno alla variabile b il valore della variabile c.

In questo modo ho scambiato i valori tra la variabile a e b. E' il metodo classico e più conosciuto.

Come scambiare i valori tra due variabili senza usare una terza variabile

In questo caso lo scambio dei valori si basa sull'operatore XOR.

Cos'è l'operatore XOR? Dati due numeri binari, l'operatore XOR restituisce 1 se i due numeri sono diversi e 0 se sono uguali. Questa operazione logica anche conosciuta come disgiunzione esclusiva.
la tabella di verità della disgiunzione esclusiva

In questo caso il passaggio dei valori avviene in questo modo:

a=a^b;
b=b^a;
a=a^b;

Lo scambio viene effettuato senza aver effettuato una terza variabile temporanea.

Un esempio pratico

a=10; // in binario 10 = 1010
b=5; // in binario 5 = 101

La prima istruzione (a=a^b) applica lo XOR tra la variabile a e b.

Poi assegna il risultato alla variabile a.

1010 (a)
0101 (b)
-----
1111 ===> a

La seconda istruzione ( b=b^a ) applica lo XOR tra le variabili b e a ( che ora vale 1111 ).

Poi assegna il risultato alla variabile b.

0101 (b)
1111 (a)
-----
1010 ===> b

Ora la variabile b vale 1010 in binario ossia 10 in decimale.

Infine, la terza istruzione applica lo XOR tra la variabile a e b ( che ora vale 1010 ).

Poi assegna il risultato alla variabile a.

1111 (a)
1010 (b)
-----
0101 ===> a

Ora la variabile a vale 0101 in binario ossia 5 in decimale.

In questo modo ho scambiato i valori tra le variabile a e b senza usare una terza variabile di appoggio.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Libri di approfondimento

Il linguaggio C

  1. Un esempio pratico
  2. Come compilare il programma

Impariamo a programmare

  1. Come dichiarare le variabili
  2. Gli operatori
  3. La libreria stdio.h
  4. Come visualizzare in output testo e variabili
  5. Come usare le stringhe
  6. L'istruzione IF
  7. Le strutture cicliche
  8. Le funzioni
  9. Gli array