본문 바로가기
C

[C/C++]임시 변수 없이 두 개의 정수 값을 교환하기

by Junk_Seo 2023. 11. 8.
반응형

1. 개요

  • c/c++에서 각 변수에 저장된 정수 값 x, y를 교환할 때 임시 변수를 사용하는데, 이 임시 변수 없이 교환하는 방법을 정리합니다.

2. 해결

  • 곱셈과 나눗셈을 사용하여 이 문제를 해결합니다.
  • 해결 과정은 다음과 같습니다.
    • a에 a * b의 값을 저장
      • a = a * b
      • b
    • b에 a / b 값을 저장
      • a = a * b
      • b = (a * b) / b
    • a에 a / b 값을 저장
      • a = (a * b) / ((a * b) / b)
      • b = (a * b) / b
    • 결론
      • a = ((a * b) * b) / (a * b) == b
      • b = (a * b) / b == a

3. 구현

  • 위에서 해결한 과정을 코드로 구현해 봅니다.
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char **argv)
{
    int a = 10;
    int b = 20;
 
    printf("a = [%d], b = [%d]\n", a, b);
    a *= b;
    b = a / b;
    a /= b;
    printf("a = [%d], b = [%d]\n", a, b);
 
    return 0;
}
반응형

'C' 카테고리의 다른 글

[C/C++] mkdir(2) 디렉터리 생성 함수 사용법  (0) 2024.03.08
[C] Linux에서 System Log 사용 방법(openlog, syslog, closelog)  (0) 2023.11.10
[C]Type Casting  (0) 2018.01.11
[C]변수 const  (0) 2018.01.11
[C]kbhit(), getch(), 방향키입력  (0) 2018.01.09