如何长时间打印
我正在做一个aproximate程序,我试图用很长的时间,但它不工作。 这是代码
#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); 
和
 scanf("%I64d", &n); 
 我知道以完全可移植的方式完成这一操作的唯一方法是使用<inttypes.h>的定义。 
在你的情况下,它看起来像这样:
 scanf("%"SCNd64"", &n); //... if(e%n==0)printf("%15"PRId64" -> %1.16"PRId64"\n",e, 4*pi); 
这真的是非常丑陋的…但至less它是便携式的。
-  您的scanf()语句也需要使用%lld。
- 你的循环没有终止条件。
- 
expression式中有太多的括号和太less的空格 pi += pow(-1.0, e) / (2.0*e + 1.0);
- 你在循环的第一次迭代中加一个,然后将零值赋给'pi'的值。 这并没有太大的改变。
-  你应该为main()使用显式的int返回types。
-  总的来说,最好是在忽略它的参数时指定int main(void),尽pipe这不像其他的那样是一个分类陈述。
-  我不喜欢C99给出的显式许可,以省略main()的结束返回,而不是自己使用; 我写return 0;明确。
 我认为整个algorithmlong long书写时是可疑的; 数据types可能应该更像long double ( scanf()格式为%Lf , printf()格式为%19.16Lf 。 
 首先,%d是一个int 
 所以%1.16lld没有意义,因为%d是一个整数 
这种typedef你做的,也是不必要的,直接使用types,做一个更可读的代码。
 你要使用的是typesdouble ,用于计算pi,然后使用%f或%1.16f 。