Почему a = (a + b) - (b = a) плохой выбор для замены двух целых чисел?

Я наткнулся на этот код для замены двух целых чисел без использования временной переменной или использования побитовых операторов.

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;
}

Но я думаю, что этот код имеет неопределенное поведение в операторе подкачкиa = (a+b) - (b=a); так как не содержитпоследовательность точек определить порядок оценки.

Мой вопрос:Является ли это приемлемым решением для замены двух целых чисел?

Ответы на вопрос(10)

Ваш ответ на вопрос