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

C# 조건식에서의 숫자 승격(Numeric Promotion) 완벽 이해

C# 숫자 승격(Numeric Promotion)이란?

숫자 승격(Numeric Promotion)은 short와 같은 작은 데이터 타입이 int처럼 더 큰 데이터 타입으로 자동 변환되는 것을 의미합니다. C# 컴파일러는 연산이나 표현식을 평가하는 과정에서 서로 다른 크기의 숫자 타입이 섞여 있을 경우, 손실 없이 값을 담을 수 있도록 작은 타입을 더 큰 타입으로 자동 승격시킵니다.

흥미로운 점은 이러한 숫자 승격이 조건식(Conditional Expression, 삼항 연산자)에서도 동일하게 적용된다는 것입니다. 아래 예제를 통해 조건식에서 일어나는 숫자 승격을 직접 확인해 보겠습니다.

예제 코드

using System;

class Program {
   static void Main() {
      short val1 = 99;
      int val2;

      val2 = (val1 == 1) ? 100 : 30;

      Console.WriteLine(val2);
   }
}

출력 결과

30

코드 설명

위 코드에서 사용된 조건식은 다음과 같습니다.

val2 = (val1 == 1) ? 100 : 30;

여기서 val2는 int 타입이고, val1은 short 타입입니다. 조건식은 val1의 값이 1인지 비교한 후, 참이면 100을 거짓이면 30을 반환합니다. 이 예제에서 val1은 99이므로 조건이 거짓이 되어 최종적으로 30이 출력됩니다.

핵심은 조건식의 결과 값들이 자동으로 int 타입으로 승격되어 평가된다는 점입니다. 즉, 개발자가 명시적으로 형변환 코드를 작성하지 않아도 C# 컴파일러가 암묵적으로 숫자 승격을 수행하기 때문에, short 타입 변수를 포함한 조건식도 별도의 캐스팅 없이 int 타입 변수에 안전하게 대입할 수 있습니다.