Permutar duas variáveis sem o uso de uma variável temp

Novembro 2016


Utilização de ponteiros


O código
#include <stdio.h> 
void change(int *,int*); 

int main () 
{ 
  int a=2,b=5; 
  printf("Antes : a=%d,b=%d\n",a,b); 

  change(&a,&b); 

  printf("Depois : a=%d,b=%d\n",a,b); 
  return 0; 
} 

void change(int *a,int *b){ 

  • a += *b;
  • b = *a-*b;
  • a = *a-*b;
}

O resultado
lami20j@debian:~/trash$ gcc permutar_var.c 
lami20j@debian:~/trash$ ./a.out 
Antes: a=2,b=5
Depois: a=5,b=2

Uso de um macro


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

int main () 
{ 
  int a=2,b=5; 
  printf("Antes: a=%d,b=%d\n",a,b); 

  PERMUTER(a,b); 

  printf("Depois: a=%d,b=%d\n",a,b); 
  return 0; 
}

O resultado
vlmath@debian:~$ gcc permutar_var.c 
vlmath@debian:~$ ./a.out 
Antes: a=2,b=5
Depois: a=5,b=2


Observação
O nome do macro, ou de suas variáveis, pode ser mudado, é claro.


Tradução feita por Lucia Maurity y Nouira

Veja também :
Este documento, intitulado « Permutar duas variáveis sem o uso de uma variável temp »a partir de CCM (br.ccm.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.