Study - Programming/C/C++2007. 8. 30. 23:30

임시 변수를 사용하지 않고, 두 변수를 교환하는 방법


a = a + b;
b = a - b; --------------> b = ( a + b ) - b = a;
a = a - b; --------------> a = ( a + b ) - b = ( a + b ) - a = b;

뭐 a ^=b ^= a ^= b 이거랑 비슷한 착상이네.. a와 b는 달라야 한다고 하더라.. 그리고 물론 덧셈(a+b)시에 오버플로우가 나서는 안되겠지.. 그래서 잘 쓰지는 않는다더라..


잠깐 생각났던 건데 a,b를 값으로 하지 말고 포인터로 넘겨주면 어떨까 생각했는데 젠장.. 포인터는 덧셈 연산인 안되지..

Posted by 머리