Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 임시 변수 없이 두 숫자를 교환하는 방법

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);)을 활용하면 더욱 간결하게 값을 교환할 수 있습니다. 다만 산술 연산 방식은 매우 큰 정수를 다룰 경우 오버플로우가 발생할 수 있으므로 주의해야 합니다.