- 정수형 (integer, int): 4바이트
영역 | 형(type) | 최소 크기 | |
정수 | short | 2바이트 | |
int | 2바이트 | 대부분 4바이트 | |
long | 4바이트 | ||
long long | 8바이트 |
- c++ 표준에서는 최소 크기를 지정하고 있다. 2바이트로는 사용하기에 부족함을 느껴 대부분 4바이트를 이용한다. 실제 몇 바이트로 구분되어 있는지는 사용하는 os와 컴파일러가 결정한다.
- int형은 4바이트(32비트)로 2^32가지의 수를 표현할 수 있다. 앞에 1비트는 부호 표현에 사용된다. 0이면 양수, 1이면 음수이다.
예를 들어 short형의 경우 2바이트로 2*8 = 16비트이다. 이진수로 표현하기 때문에 2^16개만큼 표현할 수 있다.
최대값을 체크하기 위해서는 limits 라이브러리를 이용해.. (include <limits>를 추가한다.)
ex) std::numeric_limits<shotr>::max() 를 출력해봄으로써 확인할 수 있다. 최소값은 min(), lowest()를 이용한다.
>> 각 자료형마다 표현할 수 있는 범위가 제한되어 있다는 점을 유의해야 한다.
최대값을 넘어가면 가장 작은 숫자로 표현되는데 이를 오버플로우(overflow)라고 한다. 반대로 최소값에서 -1만큼 더 빠진다면 최대값이 표현된다. 범위의 끝과 끝이 맞물려 있는 느낌이다.
- 오버플로우
C 언어 코딩 도장: 7.2 오버플로우와 언더플로우 알아보기 (dojang.io)
- 유의사항
1) unsigned int i = -1를 넣으면 오버플로우가 일어나 엉뚱한 숫자가 출력된다. 컴파일 과정에서 warning, error가 나타나지 않으니 유의한다.
2) 연산을 할 때 자료형을 주의해야 한다.
ex) 22에서 4를 나누고 싶다면 (float)22 / 4 이런식으로 해야 한다는 의미이다. 22 / 4 계산 결과를 출력한다면 정수끼리의 연산은 결과를 정수로 나타내려고 한다. 그러므로 출력 결과가 정수형으로 나타나게 되며, 5가 나온다.
(float)22 /4의 의미는 22를 float형으로 바꾸어 정수 4를 나눈다는 의미이고, 이렇게 둘 중 하나가 float이면 결과도 float으로 나온다.
'C, C++ > 공부정리' 카테고리의 다른 글
[백준 그리디 10926] ??! (0) | 2023.08.07 |
---|---|
[백준 그리디 1008] A/B - 자료형 주의! (0) | 2023.08.07 |
goto문 (0) | 2023.07.23 |
switch case문 (0) | 2023.07.23 |
[따배씨++] 기본 자료형 소개 (0) | 2023.03.19 |