C语言连续加减问题sign=-sign

题目有一个数组data有100个元素,求data[0]-data[1]+data[2]-data[3]+...-data[99]。
我的部分出错程序是:
图片说明
运行结果是-1.QNAN00000000无效植。

若用标记符号sign=-sign ,其程序是:
图片说明
运行结果则是正确的。
请问为什么我那样写的程序是错误的,那样子写不也是data[0]-data[1]+data[2]-data[3]+...吗?
学C语言没多久,所以问的问题有些简单,烦请各位大神给指导指导,谢谢啦

你的问题是,你应该 < 50,而你还是 < 100,结果下标越界了。

按照第一种的思路,你可以这么写
for (int i = 0; i < 100; i++)
sum += (i % 2 == 0 ? 1 : -1) * data[i];

int data[100];
int sum;

for(int i = 0;i < 50;i++)
{
int dex = data[2*i] - data[2*i + 1];
sum += dex;
}

数组越界了,循环50次就行了,你要是i到了50循环里就是
sum += data[100]- data[100 + 1];
很明显已经超过了data数组的长度