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)
다음코드로 자료형의 크기를 확인할 수 있다.
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 | #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; } |