c언어 접미사 질문
조회수 255회
int main(void)
{
long long big;
big = 700000000 * 700000000;
printf("%lld",big);
return 0;
}
700000000 뒤에 접미사 ll을 꼭 붙여야 하는 이유를 모르겠습니다.
1 답변
-
이유는
big = 700000000 * 700000000;
에서 일단700000000 * 700000000
이 계산 된 뒤에big
에 대입이 되기 때문입니다.먼저
700000000 * 700000000
이 계산되는데 700000000은 int형이고 700000000*700000000은 int형끼리의 곱셈이기때문에 결과도 int형입니다.그러나 실제 계산 결과는 int형의 범위를 넘어서기 때문에, int형으로 얻어지는 최종 결과는 실제 값의 일부가 잘려나가서 얻어집니다. 이 잘못된 값이 결국 big에 저장됩니다.
반면에 애초에
700000000LL * 700000000LL
로 지정하면 700000000LL은 long long int형이고 두 long long int형의 곱셈 결과도 long long int형입니다.700000000LL * 700000000LL
의 결과는 long long int형 내에 존재하는 값이 므로 값이 정상적으로 얻어지고, big에 정상적인 값이 저장됩니다.-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력