본문 바로가기

프로그래밍/C언어

09 오버플로우, 언더플로우

자료형 / 명칭
크기
값의 표현범위
정수형 char
1바이트 -128이상 +127이하
short
2바이트
-32,768이상 +32,767이하
int
4바이트
 -2,147,483,648이상 +2,147,483,647이하
long
4바이트
-2,147,483,648이상 +2,147,483,647이하
long long
8바이트
-9,223,372,036,854,775,808이상
+9,223,372,036,854,775,807이하
실수형  float 4바이트
±3.4 ×10^-37이상 ± 3.4 × 10^38이하
double
8바이트
 ±1.7 ×10^-307이상 ± 3.4 × 10^308이하
long double
8바이트 이상
 double 이상의 표현범위
구분 명칭 설명
부호가 있는 변수 signed 기본(default) 형식
부호가 없는 변수 unsigned 음수를 표현할 수 없고, 양수 값의 표현범위가 두배 정도 늘어남

2의보수의 규칙에 따라 한계를 넘은 값은 음수대로 이어져있고 그렇기에 -값이 된다.

하지만 %u로 unsigned로 인식하면 숫자는 올라간다. 이건 signed즉 2의보수의 규칙이기 때문이다.

unsinged의 경우 저건 음수대가 아닌 양수대 최대값이 되기떄문에 저런 현상이 발생한다.

자료형 크기 범위 비고
char
signed char
1바이트, 8비트 -128~127
unsigned char 1바이트, 8비트 0~255
short
short int
2바이트, 16비트 -32,768~32,767 int 생략 가능
unsigned short
unsigned short int
2바이트, 16비트 0~65,535 int 생략 가능
int
signed int
4바이트, 32비트 -2,147,483,648~ 2,147,483,647
unsigned
unsigned int
4바이트, 32비트 0~4,294,967,295 int 생략 가능
long
long int
signed long
signed long int
4바이트, 32비트 -2,147,483,648~ 2,147,483,647 int 생략 가능
unsigned long
unsigned long int
4바이트, 32비트 0~4,294,967,295 int 생략 가능
long long
long long int
signed long long
signed long long int
8바이트, 64비트 -9,223,372,036,854,775,808~
9,223,372,036,854,775,807
int 생략 가능
unsigned long long
unsigned long long int
8바이트, 64비트 0~18,446,744,073,709,551,615 int 생략 가능

https://docs.microsoft.com/ko-kr/cpp/c-language/c-type-specifiers?view=msvc-160

 

C 형식 지정자

자세한 정보: C 형식 지정자

docs.microsoft.com

 

'프로그래밍 > C언어' 카테고리의 다른 글

11 #define  (0) 2021.08.06
10 상수  (0) 2021.08.06
08 For문  (0) 2021.08.06
07 배열  (0) 2021.08.06
06 변수  (0) 2021.08.06