#include <stdio.h> →printf의 원형이 있기 때문에 써야 한다.
#include <math.h> →pow의 원형이 있기 때문에 써야 한다.
int main(void)
{
short a,b;
unsigned short c;
a=pow(2,15)-1;
b=pow(2,15);
c=pow(2,15);
printf("a의 값은 %d이다\n", a);
printf("b의 값은 %d이다\n" ,b);
printf("c의 값은 %d이다\n", c);
return 0;
}
gcc 예제3-2.c
a.exe
→
a의 값은 32767이다
b의 값은 32767이다 →요즘 pow가 개선되어 오버플로우가 발생하지 않고 최대값으로 리턴 받는다.
c의 값은 32768이다 →unsigned는 부호 없는 정수형을 선언하며 범위는 0~2^16-1
32768은 unsigned범위 안에 해당되므로 오버플로우가 발생하지 않는다.
▣생략된 것은 기본적으로 signed가 쓰여져 있는 것이다.
signed는 정수형의 기본형으로 부호를 포함한다.
정수형 | 바이트수 | 허용 범위 |
(signed) short (int) | 2 | -2^15~2^15-1 |
unsigned short | 2 | 0~2^16-1 |
int | 4 | -2^31~2^31-1 |
unsigned int | 4 | 0~2^32-1 |
long (int) | 4 | -2^31~2^31-1 |
unsigned long | 4 | 0~2^32-1 |
signed int는 32bit에서 1bit가 부호를 결정 그리고 31비트가 수의 크기.
[출처] (2)정수형 범위와 오버플로우|작성자 현우
'Java' 카테고리의 다른 글
[눈에확] JAVA의 역사와 특징 (0) | 2020.09.07 |
---|---|
[간단] isNotEmpty와 isNotNull 차이 (0) | 2020.08.13 |
java.lang.ArrayIndexOutOfBoundsException 은 어떤 에러인가? (0) | 2020.08.13 |
processWorkerExit 에 항상 breakpoint 걸릴때 해결방안 (0) | 2016.04.25 |
controller에서 alert 띄우기 (1) | 2015.12.02 |