728x90
반응형
C++에서도 Python의 type() 처럼 type_info class에서 제공하는 typeid().name()을 통해 자료형을 확인할 수 있습니다.
#include <iostream>
#include <typeinfo>
using namespace std;
int main(void)
{
cout << "void : " << typeid(void).name() << endl;
cout << "bool : " << typeid(bool).name() << endl;
cout << "float : " << typeid(float).name() << endl;
cout << "double : " << typeid(double).name() << endl;
cout << "char : " << typeid(char).name() << endl;
cout << "unsigned char : " << typeid(unsigned char).name() << endl;
cout << "short : " << typeid(short).name() << endl;
cout << "unsigned short : " << typeid(unsigned short).name() << endl;
cout << "int : " << typeid(int).name() << endl;
cout << "unsigned int : " << typeid(unsigned int).name() << endl;
cout << "long : " << typeid(long).name() << endl;
cout << "unsigned long : " << typeid(unsigned long).name() << endl;
cout << "long long : " << typeid(long long).name() << endl;
cout << "unsigned long long : " << typeid(unsigned long long).name() << endl;
return 0;
}
void : v
bool : b
float : f
double : d
char : c
unsigned char : h
short : s
unsigned short : t
int : i
unsigned int : j
long : l
unsigned long : m
long long : x
unsigned long long : y
동작시 아래와 같이 예상과 다르게 잘려서 보이는 현상이 나타나는데, typeid는 런타임 과정에서 데이터의 타입을 가져옵니다. 이는 RTTI(Run Time Type Information) 기술에서 실시간으로 데이터 타입을 확인할 때 사용한다고 합니다.
위와 같은 문제는 컴파일 과정을 거친이후 타입에 대한 정보들은 이미 기계어로 바뀌었기 때문에 런타임에서 정보를 획득하는 typeid의 경우 제대로 동작하지 않을 수 있다고 생각됩니다.
728x90
반응형
'[R&D] 프로그래밍 > C, C++' 카테고리의 다른 글
[C/C++] 메모리 동적할당 2 (realloc, calloc) (0) | 2022.08.03 |
---|---|
[C/C++] 메모리 동적할당 및 해제 (malloc, free) 사용법 (0) | 2022.08.01 |
[C/C++] 배열이란? - 배열의 개념 및 기본 사용법 (2) | 2022.07.28 |
[C/C++] 포인터(pointer)란? - 포인터의 기본 개념 (2) | 2022.07.27 |
[C/C++] 자료형 크기 및 범위 정리 (0) | 2022.07.13 |
댓글