scholi a écritéchanger deux variables en C++
Pour une fois, un post pour les développeurs. Il est souvent utile en programmation de permuter deux variables. Souvent cela ce fait en 3 lignes de la sorte (pour échanger les variable a et b):
int t=a;
a=b;
b=t;
Pour éviter de créer une nouvelle variable et d'utiliser 3 lignes de code il y a la "One Line Solution":
a^=b^=a^=b;
le signe ^ représente l'opérateur XOR (bit à bit). Si on décompose la ligne du haut cela donne:
a^=b; donne a=a xor b et b=b;
b^=a^=b; donne b=b xor (a xor b)=a et a=a xor b;
a^=b^=a^=b; donne donc b=a et a=a xor (a xor b)=b
Désolé je quote ton message en entier...
C'est peut être pratique de gagner deux lignes dans un fichier source qui en fait 10 000, mais pensez un peu à ceux qui vont relire votre code !
Par ailleurs d'un point de vue consommation, parce que oui, peut être que tu économises deux lignes dans la consommation de ton fichier et donc de ton disque dur, mais au final c'est bien ton processeur qui lui consomme qui va se retrouver à exécuter ton code. Donc on se retrouve ici avec trois ou exclusifs, alors qu'avec la solution originale le compilateur va arranger ça avec des déplacements de registres qui eux consomment beaucoup moins qu'un ou exclusif.
Voilà voilà , désolé c'est juste que je trouve dommage de sacrifier deux lignes de code quand ça rend la solution pas forcément évidente, et certainement pas optimale au final.