,有个地方没看懂。

求助,有个地方没看懂。。。
#include <stdio.h>

int main(void)
{
  double data[100]; /* Stores data values */
  double sum = 0.0; /* Stores sum of reciprocals */
  double sign = 1.0;
  int i =0;


for( i = 1 ; i<=100 ; i++)
  data[i-1] = 1.0/(2*i*(2*i+1)*(2*i+2));

  for( i = 0 ; i<100 ; i++)
  {
  sum += sign*data[i];
  sign = -sign;

  }
  /* Output the result */
  printf("\nThe result is %.4lf\n", 4.0*sum+3);
  printf("\nThe result is an approximation of pi, isn't that interesting?");
return 0;
}

答案有个地方看不懂:sum=data[0]-data[1]+data[2]-data[3]...-data[99]

sum为什么等于data[0]-data[1]+data[2]-data[3]...-data[99]?

而不是等于-data[0]-data[1]-data[2]-data[3]...-data[99],与sign=-sign=-1相乘不是负数相加吗?

------解决方案--------------------
当i=0的时候,
sum += sign*data[i]==》sum=data[0]
然后才是是sign符号变换,也就是sum=data[0]+(-1)*data[1]
......
------解决方案--------------------
sign = -sign; 等价于 sign = (-1)*sign;
每执行一次,sign符号变换一次,负负得正嘛。。