Permuter deux variables sans utilisation d'une variable temp
[Dal]
Messages postés
6205
Date d'inscription
Statut
Contributeur
Dernière intervention
-
Note : lami20j est l'auteur d'origine de l'astuce.
Le résultat
Le résultat
Remarque
Le nom de la macro, ou de ses variables, peut naturellement être changé.

Utilisation de pointeurs
Le code#include <stdio.h> void change(int *,int*); int main(void) { int a=2,b=5; printf("Avant : a=%d,b=%d\n",a,b); change(&a,&b); printf("Apres : a=%d,b=%d\n",a,b); return 0; } void change(int *a,int *b) { *a += *b; *b = *a-*b; *a = *a-*b; }
Le résultat
lami20j@debian:~/trash$ gcc permuter_var.c lami20j@debian:~/trash$ ./a.out Avant : a=2,b=<underline>5</underline> Apres : a=<underline>5</underline>,b=2
Utilisation d'une macro
Code :#include <stdio.h> #define PERMUTER(x,y) x ^= y, y ^= x, x ^= y int main (void) { int a=2,b=5; printf("Avant : a=%d,b=%d\n",a,b); PERMUTER(a,b); printf("Apres : a=%d,b=%d\n",a,b); return 0; }
Le résultat
vlmath@debian:~$ gcc permuter_var.c vlmath@debian:~$ ./a.out Avant : a=2,b=<underline>5</underline> Apres : a=<underline>5</underline>,b=2
Remarque
Le nom de la macro, ou de ses variables, peut naturellement être changé.