C#/C#_기초강의

(C#) 자료 형식 변환(1) type conversion

코딩ABC 2023. 4. 20. 09:28
반응형

자료형: 자료형 변환(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;       // 명시적 형변환

 

 

반응형