프로그래밍

 3198, 1/160 회원가입  로그인  
   tfvarsity
   http://leedohyeong1.blog.me/
   [C언어]1부터 n까지의 곱 프로그램 만들었는데..

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3335 [복사]


// 11 mar, 2012
//사용자로 부터 N 값을 입력 받고 1 부터 N 까지의 곱을 출력한다.

#include <stdio.h>
int main()
{
  int b,N,sum=1;
    printf("\n\t1 부터 N 까지의 곱을 출력합니다.\tN = ");
    scanf("%d",&N);
    
          for(b=1;b<=N;b++)
          {
                   sum=sum*b;
          }
    printf("\t1부터 %d 까지의 곱은 : %d\n\n",N,sum);
    return 0;
}

=====================
1부터12 까지는 (4790001600) 제대로 맞는데, 13부터는 이상한 숫자가 나오더라구요.
계산기로 해본결과 13! 은 6227020800인데 프로그램으로 돌리면 1932053504 가 나오는데..
숫자가 너무 커서 그런건가요?

  Hit : 12125     Date : 2012/03/12 10:59



    
cd80 4294967296 + 1932053504하면 딱 13! 나오는걸로 봐선
수가 커서 짤린거 맞는거같네요
4294967296 = 2^32 = 4바이트 = int형 크기
2012/03/12  
hdj997 unsigned int 형으로 쓰면 되지 않을까요...? 마이너스가 되는 수가 없다면요
unsigned int: int 형에서 마이너스 부분을 양의 수로 이동시켜(?) 양의 부분을 2배 시킨것요... 제가 정확히 몰라서 부정확 할 수 있으니 한번 찾아보세요!
2012/03/12  
hacker1415 숫자가 너무 커서 그래요, 더 큰수가 필요하시면 double형으로 사용하시고, 그것으로도 불충분 하다면 bigint 에 대한 자료를 찾아보시면 될꺼에요. 2012/03/21