32비트를 기준으로 한 자료형의 크기 및 범위이다. 다른 OS(16비트, 64비트)나 컴파일러에서 자료형의 크기가 조금씩 다르다는점 기억해 두자.
| 구분 |
자료형 |
크기 |
범위 |
| 기본형 |
void |
– |
– |
| 문자형 |
(signed) char |
1 byte |
-128 ~ 127 |
| unsigned char |
1 byte |
0 ~ 255 |
| wchar_t |
2 byte |
0 ~ 65,535 |
| 정수형 |
bool |
1 byte |
0 ~ 1 |
| (signed) short (int) |
2 byte |
-32,768 ~ 32,767 |
| unsigned short (int) |
4 byte |
0 ~ 65,535 |
| (signed) int |
4 byte |
-2,147,483,648 ~ 2,147,483,647 |
| unsigned int |
4 byte |
0 ~ 4,294,967,295 |
| (signed) long (int) |
4 byte |
-2,147,483,648 ~ 2,147,483,647 |
| unsigned long (int) |
4 byte |
0 ~ 4,294,967,295 |
| __int8 |
1 byte |
-128 ~ 127 |
| __int16 |
2 byte |
-32,768 ~ 32,767 |
| __int32 |
4 byte |
-2,147,483,648 ~ 2,147,483,647 |
| __int64 |
8 byte |
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
| 실수형 |
float |
4 byte |
3.4E-38(-3.4*10^38) ~ 3.4E+38(3.4*10^38) (7digits) |
| (long) double |
8 byte |
1.79E-308(-1.79*10^308) ~ 1.79E+308(1.79*10^308) (15digits) |
OS별(16bit/32bit/64bit) 크기 사용의 요점은 다음과 같다.
* int는 시스템의 기본연산 단위를 사용한다. (16bit=>2byte, 32=>4byte, 64=>4byte)
* 64bit에서 long형을 8byte로 확장하였다. (16bit=>4byte, 32=>4byte, 64=>8byte)
다음코드로 자료형의 크기를 확인할 수 있다.
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "char \t\t: " << sizeof(char) << " bytes\n";
cout << "unsigned char \t: " << sizeof(unsigned char) << " bytes\n";
cout << "wchar_t \t: " << sizeof(wchar_t) << " bytes\n";
cout << "bool \t\t: " << sizeof(bool) << " bytes\n";
cout << "short \t\t: " << sizeof(short) << " bytes\n";
cout << "unsigned short \t: " << sizeof(unsigned short) << " bytes\n";
cout << "int \t\t: " << sizeof(int) << " bytes\n";
cout << "unsigned int \t: " << sizeof(unsigned int) << " bytes\n";
cout << "long \t\t: " << sizeof(long) << " bytes\n";
cout << "unsigned long \t: " << sizeof(unsigned long) << " bytes\n";
cout << "__int8 \t\t: " << sizeof(__int8) << " bytes\n";
cout << "__int16 \t: " << sizeof(__int16) << " bytes\n";
cout << "__int32 \t: " << sizeof(__int32) << " bytes\n";
cout << "__int64 \t: " << sizeof(__int64) << " bytes\n";
cout << "float \t\t: " << sizeof(float) << " bytes\n";
cout << "double \t\t: " << sizeof(double) << " bytes\n";
return 0;
}
