반응형
자료형: 자료형 변환(Casting and type conversion)
형 변환(type casting)변수의 자료형식으로 다른 자료 형식으로 변환하는 것을 말합니다.
형 변환에는 묵시적 변환(자동 변환)와 명시적 변환(강제 형변환)이 있습니다.
암시적 변환(묵시적 변환. 자동. Implicit convertion)
특별한 변환 명령이 필요하지 않습니다. 작은 형식의 데이터가 더 큰 형식으로 자동으로 변환되는 것을 말합니다.
명시적 변환(Casts. Explicit conversion)
명시적 변환에는 변환식이 필요합니다. 일반적으로 정밀도가 더 낮거나 더 작은 형식으로 변환하는 경우입니다.
클래스를 사용한 변환
서로 호환되지 않은 형식 간에 변환이 필요한 경우네는 System.Convert 클래스나 Parse 메서드 등을 사용해서 변환할 수 있습니다.
암시적 변환(Implicit conversions)
작은 형식의 자료형이 더 큰 형식의 자료형으로 자동으로 변환되는 경우입니다.
자료형의 크기는 다음과 같습니다.
sbyte < short Int < long < float < double |
다음 예는 모두 암시적 변환에 해당됩니다.
int a = 12345; long b = a; // int 형식이 long 형식으로 자동으로 변환됩니다. float c = b; // long 형식이 float 형식으로 자동으로 변환됩니다. double d = c; // float 형식이 double 형식으로 자동으로 변환됩니다. |
큰 형식의 자료형은 더 작은 형식으로 자동으로 변환되지 않습니다.
아래의 코드는 모두 오류가 있습니다.
double a = 12345.0; // 이건 오류 아님 float b = a; // double 형식이 float 형식으로 자동으로 변환되지 않습니다. long c = b; // float 형식이 long 형식으로 자동으로 변환되지 않습니다. int d = c; // long 형식이 int 형식으로 자동으로 변환되지 않습니다. |
아마 C/C++ 언어을 사용했던 사용자라면 다음 코드에 아무런 문제가 없음을 알 것입니다.
// C,C++에서는 오류가 아닙니다. float a = 3.14; long b = 1000L; int c = b; |
그러나 C#은 자료형을 엄격하게 검사합니다.
위의 코드는 C#에서 모두 오류입니다.
// C#에서는 모두 오류입니다. float a = 3.14; // 오류 – double 형식의 3.14가 float 형식에 할당되지 않습니다. long b = 1000L; int c = b; // 오류. B는 long 형식이므로 int에 할당되지 않습니다. |
명시적 형변환(강제 형변환. Explicit conversions)
C#에서는 다음과 같이 사용하여야 합니다.
double b = 3.14; // 리터럴 3.14는 기본으로 double 형식으로 간주됩니다.
float a = 3.14; // floa 형식의 리터럴은 접미사 ‘F’또는 ‘f’를 붙여야 합니다.
double a = 3.14; float b = (float)a; // 명시적 형변환 long c = 100; int d = (int)c; // 명시적 형변환 |
반응형
'C# > C#_기초강의' 카테고리의 다른 글
(C#) 자료형: enum 열거형 (0) | 2023.04.21 |
---|---|
(C#) 자료 형식 변환(2): 문자열을 숫자로, 숫자를 문자열로 변환하기 (0) | 2023.04.20 |
(C#) 자료형: object, 박싱과 언박싱 (0) | 2023.04.20 |
(C#) 자료형: 암시적 형식 지역 변수 선언: var (0) | 2023.04.20 |
(C#) 자료형: string 문자열 형식 (0) | 2023.04.20 |