Channi Studies

[C++] 추가적인 변수 선언 없이 값 교환하기 (swap) 본문

C++/기타

[C++] 추가적인 변수 선언 없이 값 교환하기 (swap)

Chan Lee 2023. 12. 19. 23:56

프로그래밍을 하다 보면 2개의 변수에 대해서 서로의 값을 교환해야 하는 경우가 있습니다.

swap 함수를 쓰면 편하지만, 직접 효과를 구현해야 할 때도 (혹시?) 있을 것 입니다.

 

가령 a = 40, b = 30일 때 a = 30, b = 40으로 만드는 것입니다.

 

저만 그런지 모르곘지만, 항상 보조 변수를 선언해서 이 방법을 해결했었습니다.

int n 같은 변수에 a 나 b 중 하나를 저장해 놓고, 순차적으로 바꾸는 것이죠.

 

int a {40};
int b {30};

int n {};

n = a;
a = b;
b = n;

cout << a << endl;	// 30
cout << b << endl;	// 40

이런 식으로요.

아마 익숙하실 것 같습니다.

 

그런데 쓸데 없는 변수를 만들지 않고 가능한 기발한 방법을 찾아서 기록해둡니다.

int n1{30};
int n2{40};

n1 = n1 + n2;       // n1 = 30 + 40 = 70
n2 = n1 - n2;       // n2 = 70 - 40 = 30
n1 = n1 - n2;       // n1 = 70 - 30 = 40

cout << n1 << endl; // 40
cout << n2 << endl; // 30

 

이렇게 하면 의미없는 변수를 선언하지 않고 해결이 됐습니다.

 

사실 아주 간단한 아이디어인데 이런게 쉽게 생각나지 않네요..

이런게 바로바로 떠오른다면 참 좋을 것 같습니다.

 


'C++ > 기타' 카테고리의 다른 글

[C++] cin.ignore()  (0) 2023.12.28
[C++] vscode 디버깅 세팅 기록  (0) 2023.12.23
[C++] 랜덤 숫자 random number  (0) 2023.12.16
[C++] <iomanip> setprecision(n)  (0) 2023.12.10
[C++] Compund Assignment Operator  (0) 2023.12.07