Intervertir 2 vars et XOR
Bonjour à tous,
J'ai vu il y a peu, le moyen de passer la valeur d'une variable A dans une variable B et vice-versa sans avoir recour à une 3ème variable au moyen du XOR. Ce qui donne en PASCAL :
Code:
1 2 3
| a := a XOR b;
b := a XOR b;
a := a XOR b |
Or j'aimerais fort le faire aussi en C++. Le problème est qu'il n'y a pas d'opérateur XOR dans ce langage. Même de cette façon :
Code:
1 2 3
| a = (a && !b) || (!a && b);
b = (a && !b) || (!a && b);
a = (a && !b) || (!a && b); |
ça ne marche pas. Il évalue bien mes variables, les calcule bit à bit mais se tue à me retourner le résultat du test et non ce que je souhaite.
Quelqu'un pourrait-il m'aider ?
Merdi d'avance !
il ne faut pas faire un test
Salut,
C'est parce qu'il ne faut pas faire un test, mais utiliser le XOR binaire (inversion des bits)
En C++ (tout comme en C, d'ailleurs) le XOR bit à bit est représenté par ^...
Voici le code de principe ;)
Code:
1 2 3 4 5 6 7 8
|
int a=123;
int b=256;
std::cout<<"avant: a="<<a<<" b="<<b<<std::endl;
a=(a^b);
b=(a^b);
a=(a^b);
std::cout<<"apres: a="<<a<<" b="<<b<<std::endl; |