2013-01-21 6 views
0

나는 프로그램을 가지고 있으며 그 안에 Q = pow (2.0,32)를 넣는다. windows7의 32 비트 시스템을 가진 컴퓨터에서이 프로그램을 실행하면 이 작동하지만 64 비트 시스템 Windowsxp를 가진 컴퓨터에 복사하면 Q = 0이됩니다. 무엇이 문제입니까? Q는 INTlong long int in windowsxp and windows7

+4

** ** 64 비트 시스템 용 ** 재 컴파일하셨습니까? – StoryTeller

+0

Windows XP 64 비트는 매우 특이합니다. 그게 니가 가진 것일거야? –

+0

Professional x64 Edition 시스템 요약에서 시스템 유형이 x64 기반 PC –

답변

1

어떻게 Q이 0 것을 알고 않는 오래 오래입니까?

printf("%lld\n", Q);과 같은 것을 사용하여 인쇄하는 경우 Microsoft의 C 런타임 라이브러리가 부족한 것 같습니다. C99에 대한 Microsoft의 지원은 미미하며 "%lld" 형식을 지원하지 않을 가능성이 있습니다 (해당 컴파일러가 long long int을 허용한다는 사실에 놀랐습니다).

printf("Q = %lld\n", Q); 
if (Q == 0) { 
    puts("Q == 0"); 
} 
else { 
    puts("Q != 0"); 
} 

을 그리고 long long int 값을 출력하는 자신의 지원 방법을 마이크로 소프트의 문서를 참조하십시오 :

Q의 값을 인쇄하는 것 외에도 0-Q을 비교 을보십시오.

+0

으로 2^n을 얻으려면 실험실에 팩을 가져올 때 시도해 보겠습니다. –

+0

printf ("max = % lld", LONG_LONG_MAX); 은 첫 번째 windows7 컴퓨터에서 923을 인쇄합니다 ... 그리고 windowsxp에서 동일한 프로그램을 컴파일하면 -1이됩니다. 내 랩톱 windows7에서 시도하면 923이 인쇄됩니다. 윈도우 타입의 문제 –

+0

@MousaFarajallah :'pow()'함수에 대해 묻고 있습니까, 아니면'LONG_LONG_MAX'에 대해서 묻고 있습니까? 귀하의 질문에 'LONG_LONG_MAX'이 (가) 언급되지 않았습니다. 그것에 대해 물어보고 싶다면 질문을 업데이트하십시오. 어느 쪽이든, 문제를 설명하는 * complete * * compilable * 프로그램 ('main()'함수와 필수'# include' 지시어를 포함하여)을 업데이트하십시오. 반도 넘지 않아도됩니다. 그것 없이는, 당신은 우리가 당신이 정말로하고있는 것을 짐작하게 만듭니다. http://sscce.org/ –

0
#include<stdio.h> 
    #include<stdlib.h> 
    #include<math.h> 
    #include "highgui.h" 
    int main() 
    { 
    long long int Q; 
    Q=pow(2.0,32); 
    printf("%lld\n",Q); 
    printf("%lld\n",LONG_LONG_MAX); return 0; 
    }