为什么我在 400 万时将这个变量初始化为零?
Why is this variable that I initialize to zero at 4 million instead?
这里是C新手。实验室作业的一部分是调试以下代码。与预期输出 30(0、1、2、3 和 4 的平方和)不同,它产生的结果介于 32,794 和 32,797 之间。通过使用调试器,在 sumValues 函数中,变量 ii 在第一次迭代时大于 400 万,我真的不知道为什么。我敢打赌这与 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;
}
(像往常一样,非常感谢对我似乎找不到的明显事物的见解。谢谢!)
差一错误:
for (ii = 0; ii <= size; ii++)
你想要这个:
for (ii = 0; ii < size; ii++)
您从越界读取的 "extra" 元素恰好是一个非常大的数字。
在sumValues
中,更改:
for (ii = 0; ii <= size; ii++)
至:
for (ii = 0; ii < size; ii++)
它正在查看过多的数组条目,因此它正在拾取垃圾值。
这里是C新手。实验室作业的一部分是调试以下代码。与预期输出 30(0、1、2、3 和 4 的平方和)不同,它产生的结果介于 32,794 和 32,797 之间。通过使用调试器,在 sumValues 函数中,变量 ii 在第一次迭代时大于 400 万,我真的不知道为什么。我敢打赌这与 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;
}
(像往常一样,非常感谢对我似乎找不到的明显事物的见解。谢谢!)
差一错误:
for (ii = 0; ii <= size; ii++)
你想要这个:
for (ii = 0; ii < size; ii++)
您从越界读取的 "extra" 元素恰好是一个非常大的数字。
在sumValues
中,更改:
for (ii = 0; ii <= size; ii++)
至:
for (ii = 0; ii < size; ii++)
它正在查看过多的数组条目,因此它正在拾取垃圾值。