본문 바로가기

C++

데이터형의 최대값과 최소값 정리입니다.

최대값이 1012를 세번 더한 값이 되는 문제가 있었습니다.

#include <iostream>
using namespace std;
int main(void)
{
	long long int A,B,C;
	cin >> A >> B >> C;
	cout << A+B+C << endl;
	
	return 0;
}

이렇게 간단히 풀리는 문제였는데, 혼자만의 고민에 빠집니다.

이렇게 쉬운 문제일리 없어
long long int 형에도 담지못할 큰 수이니 문자열로 받아서 더하기 처리하도록 해결해야 하는것이겠군..

그러다 long long int의 최대값(LLONG_MAX)이 900경(9223372036854775807)을 넘는다는 것을 알고선 정리를 해놔야겠다고 생각했습니다.

 

각 데이터 형의 최대값과 최소값이 정의된 헤더파일 

limits.h   : 기본형 : char, int, short, long ...
float.h    : 실수형 : float, double
stdint.h  : 특수형 : int32_t, int64_t, ...

각 데이터 형의 크기/범위

데이터형 사이즈 비트수  범위 
char 1 8 -128~127
unsigned char 1 8 0~255
short 2 16 -32768~32767
unsigned short 2 16 0~65535
int 4 32 -2147483648~2147483647
unsigned int 4 32 0~4294967295
long(32bit 환경) 4 32 -2147483648~2147483647
unsigned long(32bit 환경) 4 32 0~4294967295
long(64bit 환경) 8 64 -9223372036854775808~9223372036854775807
unsigned long(64bit 환경) 8 64 0~18446744073709551615
long long 8 64 -9223372036854775808~9223372036854775807
unsigned long long 8 64 0~18446744073709551615

32비트 64비트 환경에 따라 달라지기도하고, 그렇다고 외울 순 없고, 직접 헤더파일을 확인해봤는데 알아보기도 어렵습니다. 각 헤더에 정의된 데이터타입의 최대값, 최소값을 소스상에서 직접 확인할 수 있습니다.

#include <iostream>
using namespace std;
int main(void)
{
	cout << "INT_MAX   :" << INT_MAX << endl;
	cout << "LONG_MAX  :" << LONG_MAX << endl;
	cout << "LLONG_MAX :" << LLONG_MAX << endl;
	return 0;
}

출력

INT_MAX :2147483647
LONG_MAX :2147483647
LLONG_MAX :9223372036854775807

각 데이터 형의 최대값 최소값 정의명

데이터형 최대값  최소값
char CHAR_MAX CHAR_MIN
unsigned char UCHAR_MAX 0
short SHRT_MAX SHRT_MIN
unsigned short USHRT_MAX 0
int INT_MAX INT_MIN
unsigned int UINT_MAX 0
long(32bit 환경) LONG_MAX LONG_MIN
unsigned long(32bit 환경) ULONG_MAX 0
long(64bit 환경) LONG_MAX LONG_MIN
unsigned long(64bit 환경) ULONG_MAX 0
long long LLONG_MAX LLONG_MIN
unsigned long long ULLONG_MAX 0

참고로 long long int 와 long long이 다른 것인줄 알았는데 long long (int)로 int가 생략한 표현이었습니다.

오늘도 기본을 다집니다.

반응형