아래 의자 유모가 나와서 제가 처음 c언어 공부할 때 xor를 사용한 swap 입니다.
void Tswap(int* a, int* b)
{
*a ^= *b;
*b ^= *a;
*a ^= *b;
}
^= 연산자가 정수형만 되니까 double이나 float이면 double과 같거나 큰 정 수형을 큰 수를 사용하면 되겠네요. __int64을 사용하고 일반화 시키면
template<class T>
void Tswap(T* a, T* b)
{
*((__int64*)a) ^= *((__int64*)b);
*((__int64*)b) ^= *((__int64*)a);
*((__int64*)a) ^= *((__int64*)b);
}
// 테스트...
int main()
{
double a= 123.456789;
double b= 98765432.1234567;
Tswap(&a, &b);
...
그냥 temp하나 줄여 볼려고 작성한 신기하지 않은 평범한 거니까 그리 큰 의미는 담지 마세요.