반응형
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의 종류는 더 다양합니다. 더 다양한 내용을 알고 싶으시다면 다음 사이트를 참고하세요
반응형
'C' 카테고리의 다른 글
[C] Linux에서 System Log 사용 방법(openlog, syslog, closelog) (0) | 2023.11.10 |
---|---|
[C/C++]임시 변수 없이 두 개의 정수 값을 교환하기 (2) | 2023.11.08 |
[C]변수 const (0) | 2018.01.11 |
[C]kbhit(), getch(), 방향키입력 (0) | 2018.01.09 |
[C]gotoxy() 콘솔 커서 이동 함수(SetConsoleCursorPosition) (0) | 2018.01.09 |