[C] 자릿수 많은 양의정수 저장할 변수

vimania의 이미지

C 공부하다 질문이 있습니다. 컴파일러는 GCC 입니다.

사이즈 큰 양수를 저장하려고 하는데 overflow 라는 warning 메세지가나오고 숫자가 제대로 저장이 안되있네요

unsigned long long int v1;
v1 = pow(10,100);
printf("%lld\n", v1);

결과값은 -1 이라고 나오네요 그래서

long long int v1;
v1 = pow(10,100);
printf("%lld\n", v1);

이번 결과값은 9223372036854775807 입니다.

double 인가 long double 로 해보니까 자릿수는 맞게 출력되는데 숫자가 변형되서 출력 되더라구요.

10^100 정도되는 정수는 C에서 어떻게 처리해야하나요?

Scarecrow의 이미지

gmp같은 bignum 라이브러리를 사용할 수 있습니다.

pinebud의 이미지

좀 이상하긴 하지만 string이나 int 배열을 사용해도 되긴 하겠죠..

A rose is a rose is a rose..

mike1의 이미지


http://drhanson.net/work/

이 사이트에서 books 클릭

C Interfaces and Implementations 책의 소스를 다운받아

xp.c 코드를 보시면, 도움이 되실겁니다.