Je suis tombé sur ce code pour la permutation de deux entiers sans utiliser une variable temporaire ou de l'utilisation des opérateurs au niveau du bit.
int main(){
int a=2,b=3;
printf("a=%d,b=%d",a,b);
a=(a+b)-(b=a);
printf("\na=%d,b=%d",a,b);
return 0;
}
Mais je pense que ce code a un comportement indéfini dans le swap énoncé a = (a+b) - (b=a);
comme il ne contient pas de séquence de points pour déterminer l'ordre d'évaluation.
Ma question est: Est-ce une solution acceptable pour permuter deux nombres entiers?