C#에서 두 숫자의 값을 서로 바꿀 때 일반적으로 세 번째 변수(임시 변수)를 사용하지만, 산술 연산자를 활용하면 임시 변수 없이도 간단하게 값을 교환할 수 있습니다.
기본 원리
먼저 교환할 두 개의 변수를 선언하고 초기화합니다.
val1 = 5; val2 = 10;
이제 다음과 같은 덧셈과 뺄셈 연산을 통해 두 값을 교환합니다.
val1 = val1 + val2; val2 = val1 - val2; val1 = val1 - val2;
이 방법이 작동하는 원리는 다음과 같습니다.
- 첫 번째 단계:
val1에 두 값의 합(5 + 10 = 15)이 저장됩니다. - 두 번째 단계:
val2에 합에서 기존val2(10)를 빼면 원래val1의 값인 5가 됩니다. - 세 번째 단계:
val1에 합에서 새로운val2(5)를 빼면 원래val2의 값인 10이 됩니다.
전체 예제 코드
using System;
namespace Demo {
class Program {
static void Main(string[] args) {
int val1, val2;
val1 = 5;
val2 = 10;
Console.WriteLine("교환 전 값...");
Console.WriteLine(val1.ToString());
Console.WriteLine(val2.ToString());
// 임시 변수 없이 값 교환
val1 = val1 + val2;
val2 = val1 - val2;
val1 = val1 - val2;
Console.WriteLine("교환 후 값...");
Console.WriteLine(val1.ToString());
Console.WriteLine(val2.ToString());
Console.ReadLine();
}
}
}실행 결과
교환 전 값... 5 10 교환 후 값... 10 5
참고 사항
위 방법 외에도 XOR 비트 연산(^)을 사용하는 방법이나 C# 7.0부터 도입된 튜플 스왑((val1, val2) = (val2, val1);)을 활용하면 더욱 간결하게 값을 교환할 수 있습니다. 다만 산술 연산 방식은 매우 큰 정수를 다룰 경우 오버플로우가 발생할 수 있으므로 주의해야 합니다.