본문 바로가기

삼성전자 알고리즘/기타

4. 자료형의 크기 및 범위

32비트 기준 자료형 크기. 다른 OS(16비트나 64비트)나 컴파일러에서는 자료형의 크기가 다를 수 있음.

 

구분자료형크기범위 (http://myblog.opendocs.co.kr/archives/1230 참조)

기본형 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, 32bit=>4byte, 64bit=>4byte)

 64bit에서 long형을 8byte로 확장하였다.   (16bit=>4byte, 32bit=>4byte, 64bit=>8byte)

 

Extra)

Visual Studio는 스택 크기를 1MB로 기본 설정하며, 이 크기를 초과하면 스택 오버플로가 발생.

따라서 int형 배열 25만개 이상 만들지 말것.

int main()
{
	int array[1000000]; //allocate 1 million integers (probably 4MB of memory)
}