최대값이 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가 생략한 표현이었습니다.
오늘도 기본을 다집니다.
반응형
'C++' 카테고리의 다른 글
맥(macOS) Big Sur의 Xcode 12.5에서 SFML을 사용하기 위한 설정 (0) | 2021.05.07 |
---|---|
백준 3053번 택시기하학 문제에서 배운것들-택시기하학, 원주율값(π: 파이) M_PI, double과 float의 차이 (0) | 2019.10.16 |
구조체(Struct)혹은 클래스(Class)를 정렬해보자. (0) | 2019.08.09 |
cin과 getline을 같이 사용할때 cin.ignore()이 필요한 이유 기록 (4) | 2019.07.09 |
기약분수, 서로소, 최대공약수(GCD), 유클리드 호제법, 추가) 최소공배수(LCM) (0) | 2019.06.13 |