본문 바로가기
C

[C]Type Casting

by Junk_Seo 2018. 1. 11.
반응형

Type Casting

캐스팅의 경우 묵시적 케스트(implicit cast)와 명시적 케스트(explicit cast) 두 가지로 나눌 수 있습니다.

 

묵시적 케스트는 연산자를 사용하지 않고 형 변환이 이루어지는 경우를 말합니다.

명시적 케스트는 연산자를 사용하여 형 변환을 하는 경우를 말합니다.

int i = 10;
char c = i;      //묵시적 케스트
char c =(char)i; //명시적 케스트 (c-style)

묵시적 케스트의 경우 컴파일러에 의해 자동으로 형 변환이 이루어지고, 명시적 케스트의 경우 사용자에 의해 강제적으로 형 변환을 시키는 것이다.

 

정적 케스트(static cast)

정적 케스트의 경우 static_cast <type>를 사용하여 형 변환을 합니다.

int i = 10;
char c = static_cast(i);

다음과 같은 형식으로 사용하며 c-style의 명시적 케스트 보다 안전성이 높습니다.

c-style의 명시적 케스트의 경우 형 변환이 될 수 없는 경우에도 컴파일러가 error를 잡아주지 않지만 정적 케스트를 사용할 경우 이런 error를 잡아 줍니다.

int nData = 10;
int * pData = (int*)nData;     //error가 뜨지 않음
int * pData = static_cast<int*>(nData); //error 뜸

위의 코드처럼 int 형 변수를 int * 변수로 형 변환이 불가능 하지만 c-style의 명시적 케스트의 경우 컴파일러에서 error를 잡아주지 못하지만 정적 케스트로 캐스팅한 경우 error를 잡아 줍니다.

 

 

****

cast의 종류는 더 다양합니다. 더 다양한 내용을 알고 싶으시다면 다음 사이트를 참고하세요

http://javawoo.tistory.com/40

반응형