michael3401   2년 전

소스코드에서 5번째 줄 N을 int로 선언하면 틀리고 double로 선언하면 맞습니다. 근데 둘다 프로그램 출력은 똑같이 됩니다. 그렇다면 int형으로 선언했을때는 왜 틀리는 거죠?

ksoosung77   2년 전

10번째 줄에 12*N으로 시작하기 때문에 int형의 범위를 벗어난 overflow가 일어납니다.

int형은 -2147483648부터 2147483647까지 받을 수 있지만 곱하기 12를 그 범위를 넘어서 버리기 때문입니다.

반대로 double형은 -1.8 x 10^308 부터 1.8 x 10^308 까지이기 때문에 곱하기 12를 해도 overflow가 일어나지 않아

작성자님이 원하신 값대로 출력 될 수 있던것입니다.

ksoosung77   2년 전

실제로 차이를 느끼고 싶으시면 이 문제의 최대 입력값 10억을 한번 입력해 보시면 알 수 있습니다.

댓글을 작성하려면 로그인해야 합니다.