Pas de dépendances
#include <stdio.h> void swapint(int* a,int* b) { *a = *a ^ *b; *b = *a ^ *b; *a = *a ^ *b; } void swapint2(int* a,int* b) { *a ^= *b ^= *a ^= *b; } void swapint3(int* a,int* b) { (*a)+=(*b)-=(*a)=(*b)-(*a); } void swapint4(int* a,int* b) { (*a)/=(*b)=((*a)=(*a)*(*b))/(*b); } void swapint5(int* a,int* b) { (*a)=((*b)=((*a)=(*b)^(*a))^(*b))^(*a); } void swapint6(int* a,int* b) { (*b)=(*a)+(*b)-((*a)=(*b)); } int main() { int a,b; a = 135; b = 2834; swapint(&a,&b); printf("a = %d ; b = %d\n",a,b); return 0; }
	Si vous lancez le programme, vous constatez qu'effectivement, la fonction swapint a inversé les valeurs des deux int
	le printf en témoigne.
	Pour l'instant, ne regardez pas swapint2,swapint3, etc....
	La fonction swapint va réussir à échanger les variables sans en créer une troisième temporaire.
	Car en effet, habituelle, on ferait plutôt :
	int c = a;
	a = b;
	b = c;
	Cela crée une variable temporaire c.
	Ici, avec des ^ (xor) on échange les valeurs sans variable temporaire.
	J'avais fait une petite démonstration que j'avais écrit sur un forum :
	
	Voici la démonstration que j'ai :
	Je vire les * pour de la lisibilité :
	On a :
		a = a^b
		b = a^b
		a = a^b
	Pour de la démonstration, je vais faire intervenir des variables temporaires pour ne pas perdre les valeurs de base. 
	On obtient :
		c = a^b
		d = c^b
		e = c^d
	Si je développe, on a :
		c = a^b
		d = (a^b)^b
		e = (a^b)^((a^b)^b)
	la parenthésage est inutile pour les Xor, tout est commutatif
		c = a^b
		d = a^b^b
		e = a^b^a^b^b
	Avec le Xor, x^x = 0 et x^0 = x
		c = a^b
		d = a
		e = b
	Or d = b, et e = a
	A la fin, on a donc a qui est devenu b et b qui est devenu a. 
	Sur ce même topic : 
	http://www.siteduzero.com/forum-83-673413-p1-inverser-deux-variables-sans-variable-temporaire.html
	magma propose une solution compacte encore plus bluffante :
	void swapint2(int *a, int *b)
	{
		*a ^= *b ^= *a ^= *b;
	}
	Zérotisme du même site me propose 4 nouvelles solutions intéressantes.
	Vous les trouverez dans les fonctions swapint3,swapint4,swapint5,swapint6
