C#에서는 char 형식을 decimal 형식으로 별도의 캐스팅 연산자 없이 자동으로 변환할 수 있습니다. 이를 암시적 변환(Implicit Conversion)이라고 하며, 데이터 손실 위험이 없기 때문에 컴파일러가 안전하게 처리해 줍니다.
Char에서 Decimal로 암시적 변환하기
먼저 char 변수를 선언하고 문자 값을 할당합니다.
char c = 'p';
그다음 decimal 변수에 해당 값을 그대로 대입하면 암시적 변환이 이루어집니다.
decimal dec;
dec = c;
char 값은 문자 자체가 아니라 해당 문자의 유니코드(ASCII) 코드 값으로 변환됩니다. 예를 들어 문자 'p'의 코드 값은 112입니다.
예제 코드
using System;
public class Demo {
public static void Main() {
char c = 'p';
decimal dec;
Console.WriteLine("Implicit conversion from Char to Decimal");
dec = c;
Console.WriteLine("Decimal : " + dec);
}
}
실행 결과
Implicit conversion from Char to Decimal
Decimal : 112
동작 원리
위 예제에서 문자 'p'는 유니코드 값 112에 해당합니다. char에서 decimal로의 암시적 변환 시에는 문자 모양이 아니라 이 숫자 코드 값이 decimal 타입으로 저장되므로, 출력 결과로 112가 표시됩니다.
이러한 암시적 변환이 가능한 이유는 decimal 타입이 char보다 훨씬 넓은 범위의 값을 표현할 수 있어 변환 과정에서 데이터 손실이 전혀 발생하지 않기 때문입니다. 반대 방향인 decimal에서 char로의 변환은 값 손실 가능성이 있으므로 반드시 명시적 캐스팅을 사용해야 합니다.