学C的师傅进来帮小弟我看一下

学C的师傅进来帮我看一下
#include <math.h>
main()
{
int i;
float pi,n,t;
for(pi=0,n=1.0,i=1,t=1;fabs(t)>1e-6;)
 {
 pi+=t;
 n=-n;
 i+=2;
 t=n/i;
 }
pi=pi*4;
printf("%10.6f\n",pi);
}

该程序为何会进入死循环?谢谢!

------解决方案--------------------
Turbo C太烂了,扔了吧,用Dev-C++支持最新C99标准,不错的~
------解决方案--------------------
楼主在程序
#include <math.h> 
main() 

int i; 
float pi,n,t; 
for(pi=0,n=1.0,i=1,t=1;fabs(t)>1e-6;) 
 { 
 pi+=t; 
 n=-n; 
 i+=2; 
 t=n/i; 
 } 
pi=pi*4; 
printf("%10.6f\n",pi); 


该程序为何会进入死循环?
原因是因为当用tc等16位编译器时,int i的范围是16位的-32768~32767,unsigned is 0~65536,而你的精度要达到1e-6,i的值就要出现溢出,如果你把i声明为long int,则不会出现这个问题,用vc或者devc++因为都是32位的编译器,int默认为32位,所以不会出现这个错误的。