Possible en double:
Swapping two variable value without using 3rd variableÉchange utilisant deux variables et non trois?
nous avons
int a=4;
int b=7;
puis-je échanger ces no.s sans utiliser la troisième variable?
Possible en double:
Swapping two variable value without using 3rd variableÉchange utilisant deux variables et non trois?
nous avons
int a=4;
int b=7;
puis-je échanger ces no.s sans utiliser la troisième variable?
a=a+b;
b=a-b;
a=a-b;
La mise en œuvre précise dépend bien sûr du langage de programmation que vous utilisez, mais vérifiez sur XOR swap.
Un exemple en C pourrait être
#include <stdio.h>
/* Swaps the content pointed to by a and b. The memory pointed to is
assumed non-overlapping! */
void swap(int* a, int* b)
{
*a = (*a)^(*b);
*b = (*a)^(*b);
*a = (*a)^(*b);
}
int main(int argc, char** argv)
{
int a = 4;
int b = 7;
printf("a=%d, b=%d\n", a, b);
swap(&a, &b);
printf("a=%d, b=%d\n", a, b);
return 0;
}
Important: Prasoon Saurav a commenté sur la question elle-même, this answer à une autre question est plus juste que la mienne, car il est important que les deux variables résident à des endroits sans chevauchement dans la mémoire. Mon exemple ne vérifie pas cela.
Bien sûr: a,b = b,a
fonctionne dans divers langages de programmation. Dans d'autres, vous pouvez utiliser le code xor trick.
a = a + b; // a = 11, b = 7
b = a-b; // a = 11, b4
a = a-b; // a = 7, b = 4
ou
a = a * b;
b = a/b;
a = b/a;
mais attention avec cette méthode, un débordement ou un sous-dépassement est possible pour certaines combinaisons.
Tout risque de débordement/underflow avec certaines combinaisons de chiffres. – dty
Bien sûr, c'est - voir la réponse de gspr. – Hogan
@Hogan s'est rendu compte que très rapidement et a changé de réponse, désolé pour la confusion. – fredley
ne fonctionne pas pour toutes les valeurs –