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

C#에서 SByte(8비트 부호 있는 정수)를 Decimal로 암시적 변환하는 방법

C#에서 SByte는 8비트 크기의 부호 있는 정수(signed integer)를 나타내는 데이터 형식입니다. 흥미로운 점은 이러한 SByte 값을 별도의 형변환 연산자나 메서드 없이 Decimal 타입 변수에 바로 대입할 수 있다는 것입니다. 이처럼 컴파일러가 자동으로 처리해 주는 변환을 암시적 변환(Implicit Conversion)이라고 합니다.

SByte에서 Decimal로 변환하기

먼저 sbyte 변수에 값을 설정합니다.

sbyte val = 51;

그다음, sbyte 값을 decimal 변수에 그대로 할당하면 암시적 변환이 수행됩니다.

decimal d;
d = val;

별도의 캐스팅 연산자 없이 단순히 값을 대입하기만 하면 되므로 코드가 매우 간결해집니다.

전체 예제 코드

using System;
public class Demo {
   public static void Main() {
      sbyte val = 39;
      decimal d;
      Console.WriteLine("8비트 부호 있는 정수(sbyte)에서 Decimal로의 암시적 변환");
      d = val;
      Console.WriteLine("Decimal = " + d);
   }
}

출력 결과

8비트 부호 있는 정수(sbyte)에서 Decimal로의 암시적 변환
Decimal = 39

암시적 변환이 가능한 이유

sbyte의 값 범위는 -128 ~ 127로 제한되어 있지만, decimal은 훨씬 넓은 범위와 높은 정밀도(28~29자리 유효 숫자)를 제공합니다. 따라서 sbyte의 모든 값을 decimal이 손실 없이 완전히 표현할 수 있으며, C# 컴파일러는 이러한 안전한 변환을 자동으로 허용합니다.

반대로 decimal을 sbyte로 변환할 때는 값 손실 가능성이 있으므로 명시적 캐스팅(explicit casting)이 필요합니다. 이 점을 기억해 두면 형변환 관련 오류를 예방하는 데 도움이 됩니다.