포스트

운영체제별 C++ 자료형의 크기와 범위

C++의 변수 앞에는 자료형(데이터 타입)을 지정할 수 있습니다.

자료형 타입은 다양한 크기와 다양한 표현(정수, 실수, 문자)이 존재하며, 사용하고자 하는 목적에 맞게 지정할 수 있습니다.

C++의 운영체제(16, 32, 64비트)별 자료형들의 크기가 어떻게 되는지 한 번 알아보겠습니다.


플랫폼별 자료형 크기

Windows와 Unix, Linux에서 C++ 자료형의 크기는 일반적으로는 서로 차이가 없습니다. 하지만, 이는 컴파일러마다 다를 수 있으며, 특정 시스템에서는 다른 크기를 가질 수 있습니다.

 자료형16비트 시스템32비트 시스템64비트 시스템
논리1bool1 byte1 byte1 byte
문자char1 byte1 byte1 byte
정수형short2 byte2 byte2 byte
 int2 byte4 byte4 byte
 long4 byte4 byte4 byte (윈도우)
8 byte (유닉스/리눅스)
 long long8 byte8 byte8 byte
실수형float4 byte4 byte4 byte
 double8 byte8 byte8 byte
 long double8 byte8 byte8 byte
주소pointer2 byte(16bit)4 byte(32bit)8 byte(64bit)

Windows와 Unix, Linux 시스템 간의 주요 차이점은 long 자료형입니다.

Windows에서는 long이 항상 4바이트였던 것에 반해 Unix와 Linux에서는 long의 크기가 시스템의 비트에 따라 변하면서 32비트 시스템에서는 4바이트, 64비트 시스템에서는 8바이트를 차지합니다.

또한, long double의 경우에는 Visual studio의 컴파일러를 기준으로 8바이트로 표시하였습니다. 그러나 다른 컴파일러나 시스템에서는 더 큰 크기를 가질 수도 있습니다.

위의 표는 일반적인 경우를 보여주며, 특정 컴파일러나 시스템에서는 다르게 설정될 수 있음을 유의해야 합니다.


자료형 범위

다음은 32bit Windows 운영체제에서 Visual Studio 컴파일러 기준 자료형 범위입니다.

자료형크기최소 값최대 값
  문자형 
char1 byte (8bit)-128127
wchar_t2 byte (16bit)065,535
  정수형 
bool1 byte (8bit)falsetrue
unsigned char1 byte (8bit)0255
short2 byte (16bit)-32,76832,767
unsigned short2 byte (16bit)065,535
int4 byte (32bit)-2,147,483,6482,147,483,647
unsigned int4 byte (32bit)04,294,967,295
long4 byte (32bit)-2,147,483,6482,147,483,647
unsigned long4 byte (32bit)04,294,967,295
long long8 byte (64bit)-9,223,372,036,854,775,8089,223,372,036,854,775,807
unsigned long long8 byte (64bit)018,446,744,073,709,551,615
__int81 byte (8bit)-128127
__int162 byte (16bit)-32,76832,767
__int324 byte (32bit)-2,147,483,6482,147,483,647
__int648 byte (64bit)-9,223,372,036,854,775,8089,223,372,036,854,775,807
  실수형 
float4 byte (32bit)-3.4E+383.4E+38
double8 byte (64bit)-1.79E+3081.79E+308
long double8 byte (64bit)-1.79E+3081.79E+308

위에서도 언급했지만, 주의해야 할 점은, 이러한 범위는 특정 시스템 또는 컴파일러에 따라 달라질 수 있습니다. 따라서 필요에 따라 특정 시스템에서 해당 데이터 타입의 크기나 범위를 확인하는 것이 좋습니다.

각주

  1. 논리형은 참(true) 또는 거짓(false)을 판단하는 자료형입니다. true와 false는 1bit면 충분하지만, 컴퓨터가 데이터를 처리할 때 최소 단위를 바이트(byte)를 사용하기 때문에, 1byte를 사용합니다. 

이 기사는 저작권자의 CC BY-NC-ND 4.0 라이센스를 따릅니다.