rss

Permuter deux variables sans utilisation d'une variable temp

Publié par lami20j, dernière mise à jour le jeudi 1 mai 2008 à 15:37:36 par lami20j

Utilisation de pointeurs


Le code
#include <stdio.h>
void change(int *,int*);

int main ()
{
  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=5
Apres : a=5,b=2

Utilisation d'une macro


Code :
#include <stdio.h>
#define PERMUTER(x,y) x ^= y, y ^= x, x ^= y

int main ()
{
  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=5
Apres : a=5,b=2

Remarque
Le nom de la macro, ou de ses variables, peut naturellement être changé.

Autres Astuces dans la catégorie Langage C

Logiciels pertinents trouvés dans les téléchargements
Télécharger Tight VNC 1.3.9Tight VNC - VNC (Virtual Network Computing) est une application client/serveur permettant d'accéder graphiquement à une machine...Catégorie: Connexion à distance
Licence: Open Source
Télécharger Notepad++ 5.0.3Notepad++ - Notepad++ est un editeur de code source qui supporte plusieurs langages. Il s'agit d'un logiciel libre performant et...Catégorie: Développement
Licence: Open Source
Télécharger SuperDocker 2.5.8SuperDocker - SuperDocker est un programme de personnalisation des différents éléments de votre MacOSX Leopard. En utilisant cette...Catégorie: Personnalisation
Licence: Freeware/gratuit
Télécharger Visual Basic Express 2005 2005Visual Basic Express 2005 - Le langage de programmation Visual Basic est historiquement dans les gènes de la société Microsoft. Avec plus de 30.000...Catégorie: Visual Basic
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « Permuter deux variables sans utilisation d'une variable temp »