下面代码如果将flag定义为int型为什么输出0.000000

#include<stdio.h>
void main(){
int n,i;
double item,sum,flag;
scanf("%d",&n);
for(i=1,sum=0.0,flag=-1;i<=n;i++){
flag*=-1;
item=1.0*(flag/(i*(i+1)));
sum+=item;
}
printf("%lf",sum);
}

flag在程序中要么是1,要么是-1
整数除法结果会截掉小数部分,(flag / (i * (i + 1))) 应该都是0, 所以sum 一直加0
最后输出0.000000