c언어 접미사 질문

조회수 255회
int main(void)

{

long long big;

big = 700000000 * 700000000;

printf("%lld",big);

return 0;

}

700000000 뒤에 접미사 ll을 꼭 붙여야 하는 이유를 모르겠습니다.

1 답변

  • 좋아요

    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에 정상적인 값이 저장됩니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)