호빵의 IT 개발소

[C#] 4. 형식 변환 본문

C#, 유니티/C# 기초

[C#] 4. 형식 변환

호빵Stack 2021. 12. 28. 19:30

//변수 타입이 다른 경우!!

int a = 1000;

short b = a; //에러가 발생하게 됩니다. 왜냐하면 기존 그릇보다 작은곳으로 선언되기 때문입니다.

-> shor b = (short)a; //이렇게 변경하게 되면 에러는 사라지지만 a값이 만약 short(2바이트) 범위(약 -3만~ 3만)를 벗어나게 되면 일부 데이터가 손실될 수 있습니다.

 

그렇다면 반대로 a가 short형이고 int b에 선언된다면?

short a = 1000;

int b = a; //문제없이 실행 됩니다.

 

//변수의 크기는 같지만 부호가 다른 경우!!

byte c = 255;

sbyte sb = (sbyte)c; // 값은 -1이 나오게 됩니다. 이유는 byte c는 0xFF = 0b11111111이기 때문입니다. 이 값이 sbyte sb에 들어가게 된다면 2진수에 최상위 비트는 부호자리로 바뀌기 때문에 -1이 되게 됩니다.

 

※여기서 범위를 초과하는 경우를 Overflow(오버플로우), 범위를 미달하는 경우는 Underflow(언더플로우)라고 합니다.

 

//소수 float <-> double 변환

float a = 3.14f;

double b = a;

//문제없이 선언됩니다. 하지만 소수 같은 경우는 정수와는 다르게 정확한 값을 표현하지 않고 인접한 값을 표현하므로 혹시나 소수끼리 변수를 선언해야하는 상황이 온다면 어느 정도 오차를 감안하여 예측하셔야 합니다. 예) 3.14를 선언했는데 디버깅해서 값을 확인해 보면 3.100034 등 값이 나올수 있습니다.

 

 

---------------------------------------------------------------------------------------------------------------------------

참고 : [인프런] Rookiss님의 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문

'C#, 유니티 > C# 기초' 카테고리의 다른 글

[C#] 6. if문  (0) 2021.12.28
[C#] 5. 데이터 연산  (0) 2021.12.28
[C#] 3. 불리언, 소수, 문자, 문자열 형식  (0) 2021.12.28
[C#] 2. 2진수, 8진수, 10진수, 16진수  (0) 2021.12.27
[C#] 1. 정수 형식  (0) 2021.12.27
Comments