YUYANE

C / 오버플로우 본문

Programming Languages/C

C / 오버플로우

YUYA 2021. 1. 19. 12:21

오버플로우

 

데이터 타입이 저장할 수 있는 최대/최소 범위를 넘어섰을 때를 일컫는다.

 

 

예시

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    float price = get_float("What's the price?\n");
    printf("Your total is %.100f.\n",price);
}

 

float 값을 입력 받아 출력시키는 코드이다.

'%.100f'는 소수점 아래 100자리까지 출력하라는 구문이다.

 

 

 

'0.2'를 입력 했으니, 결과 값으로 '0.2000000000...'을 가져야 마땅하지만,

보다시피 0 이외에 이상한 숫자들이 출력된다.

 

 

 

원인

 

이는 float에서 저장 가능한 비트 수를 넘어섰기 때문이다.

프로그램을 작성하면 구동 중에 RAM이라 불리는 메모리에 저장되는데,

RAM은 유한한 크기의 비트만 저장할 수 있기 때문에 부정확한 결과를 내놓는 것이다.

 

 

 

참고

 

www.boostcourse.org/cs112/lecture/119010

Comments