본문 바로가기

TechLog

두 개의 bool 변수의 값을 맞바꾸는 방법

※ 불현듯 생각난 주제에, 잘못된 내용을 적어놨네요. 아래 댓글에 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;


쉬운 코드 작성하기는 쉽지 않구나. 역시 난 틀렸어(?)