C#/공부

C# 형식 변환

DoubleJK 2021. 8. 11. 23:09
728x90

형식 변환

특정 타입으로 저장돼있는 데이터를 다른 타입으로 변환하는 것

형식 변환에는 세 가지 경우가 있습니다. 

 

  • 타입의 크기가 다른 경우 
  • 타입의 크기는 같으나 부호가 다른 경우 
  • 실수로 변환하는 경우 

 

  • 타입의 크기가 다른 경우는 두 가지로 나누어집니다.
  • 큰 타입에서 작은 타입으로 변환하는 경우
int a = 1000;
short b = a;

예를 들어 위처럼 int에서 short로 변경하는 경우에는 오류가 발생합니다.
암시적으로 변경할 수 없으니 명시적으로 변환하라는 오류입니다.

short b = (short)a;

위처럼 명시적으로 작성을 해주어야 오류가 발생하지 않습니다.
하지만 변경한 타입의 범위를 넘어가는 데이터는 손실이 일어나게 됩니다.
  • 작은 타입에서 큰 타입으로 변환하는 경우
short b = a;

아무런 문제 없이 변환이 일어납니다.

 

  • 타입의 크기는 같으나 부호가 다른 경우
byte와 sbyte 같은 경우 입니다.

byte a = 255;
byte b = (sbyte)a;

위 경우도 암시적 변환은 에러가 일어나기 때문에 명시적으로 변환을 해주어야 합니다.
범위를 초과할 경우 오버플로우가 일어나 값이 달라지며,
반대로 미달일 경우 언더플로우가 일어나게 됩니다.

 

  • 실수로 변환하는 경우
float a = 3.14f;
double b = a;

위에 두 개의 실수가 있습니다.
double로 변환된 float a는 3.14가 아닌 3.14에 인접한 값으로 변환이 됩니다.
실수로 캐스팅을 할 경우에는 정확한 값이 나오지 않을 경우가 많으니 주의해야 합니다.

 

728x90

'C# > 공부' 카테고리의 다른 글

C# 데이터 연산  (0) 2021.08.12
C# 데이터의 종류  (0) 2021.08.11
C# 10진수, 2진수, 16진수  (0) 2021.08.11