есть std::swap
, так как в целом это зависит от вашего процессора, поддерживает ли он обмен.есть инструкция «сравнить и поменять местами», но она работает только с типами, которые вписываются в регистр, и гарантированно является атомарной.Существует встроенная реализация сравнения и свопинга (CAS) из gcc , которая используется для синхронизации реализаций потоков и мьютексов и, вероятно, выходит за рамки вашей цели, поэтому лучше придерживаться только использования временногопеременная или если вы действительно застряли в C, вы всегда можете использовать макрос, как это:
#define swap(a,b) a=a^b; \
b=a^b; \
a=b^a;