TechLog
두 개의 bool 변수의 값을 맞바꾸는 방법
Kenial
2012. 4. 20. 17:46
※ 불현듯 생각난 주제에, 잘못된 내용을 적어놨네요. 아래 댓글에 kevin님이 지적해주신대로,
값을 맞바꾸는게 아니라 서로 exclusive한 두 bool 값을 토글하는 로직에 대한 내용이었습니다. 어디서 봤던 글인지 출처가 생각이 안 나서 원래 맥락을 모르겠네요. 이게 대체 왜 필요한 거였지...? -_-)a
그냥 불현듯 생각나서.
타입에 관계없이 변수 두 개의 값을 맞바꿀 때에는 보통(=아무 생각 하기 싫을 때) 임시 변수를 사용하곤 한다:
BOOL a = true;
BOOL b = false;
BOOL temp;
temp = a;
a = b;
b = temp;
뭐 이런 식.
근데 게시판을 둘러보다 보니 누군가 'bool 타입의 변수라면 코드를 더 축약할 수 있지 않느냐?'는 취지의 글을 써 놓았다. 그 글을 보고 (답을 보기 전에) 나는 이런 코드를 생각했다:
BOOL a = true;
BOOL b = false;
b = !(a = b);
근데 그 글의 답은 이거였다:
BOOL a = true;
BOOL b = false;
a = b;
b = !a;
쉬운 코드 작성하기는 쉽지 않구나. 역시 난 틀렸어(?)