2013-01-21 163 views
0

我有一個程序,它裏面我把Q = pow(2.0,32) 當我在一臺32位Windows7系統的計算機上運行此程序時,它將工作 但當我將其複製到具有64位系統windowsxp的計算機時,它會給我Q = 0 有什麼問題? Q很長intlong long int在windowsxp和windows7

+4

你**重新編譯爲** 64位系統? – StoryTeller

+0

Windows XP 64位非常*不常見。你確定這是你的? –

+0

專業x64版從系統概要系統類型是x64的基PC –

回答

1

你如何知道Q是0?

如果你正在使用類似printf("%lld\n", Q);打印出來,很可能你正在運行到Microsoft的C運行時庫的缺乏。微軟對C99的支持很少,很可能他們不支持"%lld"格式(我驚訝他們的編譯器允許long long int)。

嘗試除了比較Q爲0,以打印的Q值:

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

,並諮詢Microsoft的文檔打印long long int值的支持方式。

+0

確定我會嘗試,當我來到包到實驗室2^N,感謝 –

+0

我寫的printf( 「最大=%LLD」,LONG_LONG_MAX);在第一Windows7電腦 它會打印923 ......當我在WindowsXP編譯相同的程序它會給我-1,當我嘗試在我的筆記本電腦Windows7中其打印923 ......,所以我的事Windows中的問題類型 –

+0

@MousaFarajallah:你在問'pow()'函數嗎,還是你在問'LONG_LONG_MAX'?你的問題沒有提到'LONG_LONG_MAX';如果你想問這個問題,請更新你的問題。無論哪種方式,請更新您的問題,向我們展示一個*完整* *可編譯*程序(包括'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; 
    }