Я наткнулся на этот код для замены двух целых чисел без использования временной переменной или использования побитовых операторов.
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;
}
Но я думаю, что этот код имеет поведение undefined в операторе swap a = (a+b) - (b=a);
, поскольку он не содержит никаких точек последовательности, чтобы определить порядок оценки.
Мой вопрос: приемлемо ли это решение для замены двух целых чисел?