아래 의자 유모가 나와서 제가 처음 c언어 공부할 때 xor를 사용한 swap 입니다. <div><br></div> <div><div>void Tswap(int* a, int* b)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>*a ^= *b;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>*b ^= *a;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>*a ^= *b;</div> <div>}</div></div> <div><br></div> <div>^= 연산자가 정수형만 되니까 double이나 float이면 double과 같거나 큰 정 수형을 큰 수를 사용하면 되겠네요. __int64을 사용하고 일반화 시키면</div> <div><br></div> <div>template<class T></div> <div>void Tswap(T* a, T* b)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>*((__int64*)a) ^= *((__int64*)b);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>*((__int64*)b) ^= *((__int64*)a);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>*((__int64*)a) ^= *((__int64*)b);</div> <div><span style="font-size:9pt;line-height:1.5;">}</span></div> <div><br></div> <div><br></div> <div>// 테스트...</div> <div><div>int main()</div> <div>{</div> <div><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">double a= 123.456789;</span></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>double b= 98765432.1234567;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>Tswap(&a, &b);</div></div> <div><span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span>...</div> <div><br></div> <div>그냥 temp하나 줄여 볼려고 작성한 신기하지 않은 평범한 거니까 그리 큰 의미는 담지 마세요.</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.