C, C++/공부정리

[따배씨++] 정수형 (Integers)

짱짱이_ 2023. 3. 19. 17:08
  • 정수형 (integer, int): 4바이트

 

영역 형(type) 최소 크기  
정수 short 2바이트  
  int 2바이트 대부분 4바이트
  long 4바이트  
  long long 8바이트  

 

- c++ 표준에서는 최소 크기를 지정하고 있다. 2바이트로는 사용하기에 부족함을 느껴 대부분 4바이트를 이용한다. 실제 몇 바이트로 구분되어 있는지는 사용하는 os와 컴파일러가 결정한다. 

 

 

 

https://velog.io/@wlsgur1533/%EC%9E%90%EB%A3%8C%ED%98%95-%ED%83%80%EC%9E%85

 

- 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)

 

C 언어 코딩 도장: 7.2 오버플로우와 언더플로우 알아보기

만약 정수 자료형에서 저장할 수 있는 범위를 넘어서면 어떻게 될까요? 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요. integer_overflow.c #include int main() { char num1 = 128; // char에 저장할 수

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