我有一个程序,在里面我把Q = pow(2.0,32) 当我在具有32位系统的windows7的计算机上运行该程序时,它将工作 但是当我将它复制到具有64位系统windowsxp的计算机时,它会给我Q = 0 问题是什么? Q是long long int
答案 0 :(得分:1)
你如何知道 Q
是0?
如果您使用printf("%lld\n", Q);
之类的内容进行打印,则可能是您在Microsoft的C运行时库中遇到了缺陷。微软对C99的支持很少,而且他们可能不支持"%lld"
格式(我很惊讶他们的编译器允许long long int
)。< / p>
除了打印Q
的值之外,请尝试将 Q
与0进行比较:
printf("Q = %lld\n", Q);
if (Q == 0) {
puts("Q == 0");
}
else {
puts("Q != 0");
}
请参阅Microsoft的文档,了解其支持的打印long long int
值的方法。
答案 1 :(得分: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;
}