C#/문법 정리
C# - 캐스팅(Casting)과 자료형 변환
Khadra
2024. 6. 21. 19:25
C#은 엄격하게 자료형을 체크한다.
예제 코드
double 형식의 리터럴을 암시적으로 'float'형식으로 변환할 수 없다.
float f = 1234.5; // error
- 접미사 없는 실수는 double로 인식하기 때문이다.
- 하나의 자료형을 다른 자료형으로 바꾸는 것을 형변환이라고 한다.
형변환은 두 가지로 나뉜다.
1. 암시적 형변환
- float를 double로 형변환하는 경우
- 작은 자료형을 더 큰 자료형으로 변환할 때 = 데이터 손실이 생기지 않는다.
- 이런 경우에는 자동으로 형이 변환된다.
2. 명시적 형변환
- double을 int로 변환하는 경우
- 큰 자료형을 작은 자료형으로 변환할 때 = 데이터 손실이 생길 수 있다.
- 이런 경우에는 강제 형변환을 시켜줘야 한다.
명시적 형변환을 위해서는 변환하고자 할 때
- 하는 자료형으로 기존자료형을 캐스트(cast)해준다.
- 예를 들어 double 변수 x가 있을 때 int a = (int)x;라고 하면 x를 int로 바꾼 후에 int 변수에 a에 할당한다.
- 이때 x의 값이 소수점 아래 수를 가지고 있다면 정수로 변환되면서 소수점 아래 숫자는 잃어버린다.
예제 코드
using System;
using static System.Console;//Console단어를 생략(코드길이줄어둠)
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
// int 변수 num을 선언하고 2147483647을 할당한다.
int num = 2147483647;
// 암시적 형변환
// long 변수 bigNum을 선언하고 num 변수의 값을 할당한다.
// int보다 long이 더 크므로 암시적 형변환이 가능하다.
long bigNum = num;
// bigNum의 값을 출력한다.
// bigNum은 암시적 형변환으로 num값과 똑같은 값을 가지고 있다.
WriteLine(bigNum);
// double x를 선언하고 1234.5를 할당한다.
double x = 1234.5;
int a;
// 명시적 형변환
// int 변수 a에 double 변수 x의 값을 할당한다.
// int보다 double이 더 크므로 (int)로 캐스팅하여 강제로 형변환을 해준다.
a = (int)x;
// int 변수 a를 출력한다.
// 강제 형변환으로 소수점 아래는 손실된 것을 알 수 있다.
WriteLine(a);
}
}
}
결과
2147483647
1234