为什么我将这个变量初始化为零(400万?]

问题描述 投票:0回答:2

这里的C新手。实验室作业的一部分是调试以下代码。而不是预期的输出30(0、1、2、3和4的平方和),它产生的结果介于32794和32797之间。通过使用调试器,在sumValues函数中,第一次迭代中的变量ii大于4百万,我真的不确定为什么。我敢打赌这与C的初始化过程有关:

#include <stdio.h>

int sumValues(int v[], int length);

int main(void)
{
   int val[5], n;
   for (n = 0; n < 5; n++)
      val[n] = n * n;

   printf("the sum of entered values is %d", sumValues(val, 5)
   return 0; 
}

int sumValues(int a[], int size)
{
   int sum, ii;
   sum = 0;
   ii  = 0;

   for (ii = 0; ii <= size; ii++)
      sum += a[ii];

   return sum; 
}

(像往常一样,对我似乎找不到的显而易见的事物的见解得到了极大的赞赏。谢谢!)

c initialization int
2个回答
0
投票

一次性错误:

   for (ii = 0; ii <= size; ii++)

您想要这个:

   for (ii = 0; ii < size; ii++)

您正在越界读取的“额外”元素恰好是一个很大的数字。


0
投票

sumValues中,更改:

for (ii = 0; ii <= size; ii++)

至:

for (ii = 0; ii < size; ii++)

它正在查看太多的数组条目,因此它正在获取垃圾值。

© www.soinside.com 2019 - 2024. All rights reserved.