Cette équation permute deux nombres sans variable temporaire, mais utilise des opérations arithmétiques :
a = (a+b) - (b=a);
Comment puis-je le faire sans opérations arithmétiques ? Je pensais à XOR.
Cette équation permute deux nombres sans variable temporaire, mais utilise des opérations arithmétiques :
a = (a+b) - (b=a);
Comment puis-je le faire sans opérations arithmétiques ? Je pensais à XOR.
Utilisation de XOR,
void swap(int &a, int &b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
Une doublure avec XOR,
void swap(int &a, int &b)
{
a ^= b ^= a ^= b;
}
Ces méthodes semblent être propres, car elles n'échouent pour aucun cas de test, mais encore une fois puisque (comme dans la méthode 2) la valeur de la variable est modifiée deux fois dans le même point de séquence, on dit qu'elle a un comportement indéfini déclaré par ANSI C.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.