2013-01-21 116 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; 
    }