long long int 를 선언시 에러가 발생합니다.
글쓴이: kldpzone / 작성시간: 목, 2005/03/17 - 8:56오후
제가 2^53승을 계산하고 싶습니다.
검색을 해보니 long long 으로 64bit int를 정의할 수 있다고 하는데 아래와 같이 짜니 에러가 나네요..
컴파일 환경은 VC++ 6.0 입니다.
#include <iostream> #include <string> #include <math.h> #include <limits.h> int main() { long long int num; // 2^53 을 계산하고 싶음 int n , j ; long long int limit ; // 소수를 계산하기 위한 루프중 최적의(내가 생각할때) 적은 루프수 int i , tmp ; n = 53 ; num = pow( 2 , n ) - 1 ; // 2^53 계산하기 limit = sqrt(num) + 1 ; // limit까지만 루프를 돌려서 소수를 찾을 수 있다. printf ( "Big number is %d and limitation is %d\n\n" , num , limit ) ; j = 2 ; for ( i = 2 ; i < limit ; ) { i = 2 * j -1 ; // limit로 루프수를 줄였지만 짝수를 빼고 홀수만 계산해서 더 빠르게 소수를 찾는다. j++; tmp = num % i ; // 나머지가 0인지 알아본다. if ( tmp == 0 ) { // 나머지가 0이면 소수가 아니다 printf ( "This number is not prime.\n" ) ; printf ( "It's devided by number %d\n\n" , i ) ; return 0; } } printf ( "It's prime.\n" ) ; printf ( "\nThis calculate %d times.\n\n" , i ) ; // printf ( "%d\n" , num / 2351 ); return 0 ; }
Quote:
C:\Documents and Settings\DBLAB04\My Documents\강의\algorithms\2-47.cpp(7) : error C2632: 'long' followed by 'long' is illegal
C:\Documents and Settings\DBLAB04\My Documents\강의\algorithms\2-47.cpp(9) : error C2632: 'long' followed by 'long' is illegal
그리고 double형으로 선언하면 64bit 자리를 잡는데
double형 % double형 으로 나머지를 구하면 또한 아래와 같이 에러가 납니다.
Quote:
C:\Documents and Settings\DBLAB04\My Documents\강의\algorithms\2-47.cpp(25) : error C2296: '%' : illegal, left operand has type 'double'
제가 주요하게 알고 싶은건 64bit int를 VC++ 6.0 에서 정의하는 것입니다.
Forums:
Re: long long int 를 선언시 에러가 발생합니다.
_int64 형이 Visual C++에서 정의된 64bit 정수형입니다.
하지만 이것만 쓴다고 위 코드가 돌지는 않습니다. pow 등이 _int64 형을 돌려주는 함수가 아니니깐요.
그러면 처음에 선언한[code:1] long long int nu
그러면 처음에 선언한
long long int num;
위 코드부분은 맞는 건가요?
pow가 _int64를 return 하지 않는다면 for( ; < n ; ) 까지 하면 될듯한데..
이렇게 pow 부분은 바꿨습니다.
그런데 처음 변수 선언시 long long int 는 맞는 건가요?
_int64 형이 C++에서 정의가 되었다고 해도 선언은 어떻게 하나요? 계속 같은 에러가 납니다.
[quote="kldpzone"]_int64 형이 C++에서 정의가 되었
:roll:
__int64 입니다.
__int64 입니다. underscore 2개...
겁나 오래전 글이 검색으로 찾아져서 심심해서..
다들 답은 핀트가 나간 답을 말하시네요.
long long int 는 C99 표준에서 정의되었습니다.
visual C 6.0 버전은 나온 때가 그 때보다 이전이고, 당연히 C99 지원하지 않습니다.
!23456---1----+----2----+----3----+----4----+----5----+----6----+----7-2--+----8
"배웠다"는 "할 수 있다"의 동의어가 아니다.
댓글 달기