我正在做一个近似 PI 的程序,我试图使用 long long,但它不起作用。
这是代码
#include<stdio.h>
#include<math.h>
typedef long long num;
main(){
num pi;
pi=0;
num e, n;
scanf("%d", &n);
for(e=0; 1;e++){
pi += ((pow((-1.0),e))/(2.0*e+1.0));
if(e%n==0)
printf("%15lld -> %1.16lld\n",e, 4*pi);
//printf("%lld\n",4*pi);
}
}
%lld
是标准的 C99 方式,但这不适用于我正在使用的编译器(mingw32-gcc v4.6.0)。在此编译器上执行此操作的方法是:%I64d
所以试试这个:
if(e%n==0)printf("%15I64d -> %1.16I64d\n",e, 4*pi);
and
scanf("%I64d", &n);
我知道以完全可移植的方式执行此操作的唯一方法是使用中的定义<inttypes.h>
.
在你的情况下,它看起来像这样:
scanf("%"SCNd64"", &n);
//...
if(e%n==0)printf("%15"PRId64" -> %1.16"PRId64"\n",e, 4*pi);
它确实很丑……但至少它是便携式的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)