형식변환에 대해 살펴보죠.
형식변환이란 가끔 데이터 형식끼리 변환해야 할 필요가 있을 때가 있죠. 그럴때 사용합니다.
형식변환에는 2가지로 분류할 수 있는데요.
암시적 형식 변환, implicit type conversion 이라고 하며,
명시적 형식 변환, explicit type conversion 이라고 합니다.
1) 암시적 형식변환
데이터 형식끼리 변환을 하고자 할 경우, 값이 변하지 않는다는 보장이 있으면 자동적으로 이루어질 수 있습니다.
using System;
public class test
{
public static void Main()
{
short a = 10;
short b = 20;
int tot;
tot = a + b;
checked //오버플로러 검사하기 위해서 기재함.
{
Console.WriteLine(tot);
}
}
}
int 형은 short 형보다 많이 담을 수 있답니다. int 형은 32비트 정수형을 담을 수 있고요. short 형은 그 보다 작은 16비트 정수형을 담을 수 있답니다.
따라서 사용자가 굳이 데이터 형식변환을 명시하지 않아도 알아서 형식변환을 해줍니다. 이를 암시적 형식변환이라고 합니다. 한마디로 작은 범위에서 큰 범위로의 변환이라고 생각하시면 되겠네요.
==========================================
이번은 명시적 형식변환에 대해 알아보죠.
암시적으로 변환할 수 없는 것들에 대해 명시적 형식변환을 해야 합니다. 이는 어떤 데이터형식을 다른 데이터 형식으로 강제로 형식 변환하는 것을 의미합니다. 아래는 암시적 형식변환으로 바꿀 수 없는 경우를 보여주고 있죠.
1) int -> short 으로 변환
2) int -> uint 으로 변환
3) uint -> int 으로 변환
4) float -> int 으로 변환
5) 숫자형 -> char 으로 변환
6) decimal -> 다른 형식으로 변환
그러면 명시적 형식변환은 어떻게 하는지 아래의 소스를 보죠.
long longs = 30000;
int i = (int)longs;
형식변환을 명시적 형식변환으로 강제적 변환을 했지만, int 형의 최대값은 2147483647 입니다. 따라서 코드를 실행할 경우 정확한 값을 얻기가 어렵습니다. 따라서 오버플로를 검사하기 위해서는 checked 라는 연산자를 제공하며 점검을 할 수 있답니다.
int i = checked((int)longs);
그리고 숫자형을 문자형으로 형변환을 하고자 할 경우,
int i = 33;
string s = i.ToString();
object 의 ToString 이라는 메소드를 사용하는 것을 볼 수 있답니다.
문자형을 숫자형으로 형변환을 하고자 할 경우는 어떻게 사용할까요?
string a = "200";
int i = int.Parse(a);
Parse 메소드를 사용하는 것을 볼 수 있답니다.
posted by 심재운 (shimpark@gmail.com)