YunDev

c++ 정수형에 대해 알아보자! 본문

C언어/C++

c++ 정수형에 대해 알아보자!

S준 2020. 5. 6. 08:00

1.정수형

정수형에는 short, int, long이 있고 각 정수를 저장하는데 사용하는 비트의 수가 다릅니다. short형은 16비트, 일반적으로 int는 32비트, long도 32비트입니다.

 

short형은 -32768부터 +32767까지의 정수를 담을 수 있고 int와 long형은  -21억부터 +21억까지의 정수를 담을 수 있습니다.


 

 

2.unsigned, signed 수식자

 

unsigned는 변수가 음수가 아닌 값이라는 걸 나타냅니다. 음수를 제외하면 같은 비트로 더 넓은 범위의 양수를 담을 수 있습니다. 물론 무조건 음수가 될 수 없는 값에만 사용해야합니다.

 

signed는 변수가 음수도 가질 수 있다는 것을 명백히 하는데 사용됩니다. 따라서 signed int와 int는 같은 의미라서 보통은 생략됩니다.

 


 

 

3.오버플로

 

int형 변수는 나타낼 수 있는 정수의 범위가 제한되어 있기에 조심해야 할게 있습니다.

 

#include <stdio.h>
#include <limits.h>

int main() //반환 값 필요
{
	short s_money = SHRT_MAX; //최댓값으로 초기화한다.
	unsigned short u_money = USHRT_MAX; //최댓값으로 초기화한다.

	s_money += 1;
	printf("s_money = %d\n", s_money);

	u_money += 1;
	printf("u_money = %d\n", u_money);

	return 0;
}

 

 

결과 :

 

 

short형 변수 s_money는 최댓값 32767을 저장하고 1을 증가시키니 -32768이 되었고 unsigned short형 변수인 u_money는 최댓값 65535에서 0으로 넘어갔습니다. 이런 경우를 오버플로 라고 하며 변수가 나타낼 수 있는 범위를 넘는 숫자를 저장하려 할때 발생합니다.

 

그래서 개발을 할때 오버플로가 일어나지 않도록 주의하여야 합니다.!!

 

 

오늘은 이렇게 정수형에 대해 알아보았습니다~ :D :D