欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第一章1 解释

程序员文章站 2022-04-14 16:43:46
...

注:此问题同学们做了大量回复,并且有很多同学的解释正确并且详尽,但由于我操作不当删除了一部分回复,这里我借助调试过程做出如下解释。对同学们的回复工作进行表扬。

补全代码如下:

sum(int a[ ], unsigned len);
main()
{
	int a[3]={1,2,3};
	printf("%lf",sum(a,0));
}

sum(int a[ ], unsigned len)
{
	int	i,sum = 0;
	for	(i=0; i<= len-1; i++)
      	sum += a[i];
	return sum;
}

此处main函数中定义了数组a,拥有3个元素。

调试时第12行sum累加运算处设置断点(Visual studio 中快捷键为F9),然后调试运行(Visual studio 中快捷键为F5)
进入断点后状态如下图:
第一章1 解释
如同学们所说的一样,len-1的结果为一个非常大的正数,它是232-1。此时a[0]=1,sum=0。
继续运行(F5),
第一章1 解释
此时a[1]=2,sum=1。
继续运行(F5),
第一章1 解释
此时a[2]=3,sum=3。
继续运行(F5),
第一章1 解释
此时a[3]=1245064,a[3]未赋初值,当前值不正确,sum=6,sum的值的数组a的3个素之和(1,2,3)。
删除断点(F9),继续运行(F5),
第一章1 解释
for循环4145次停止,并报告出错,出错信息可理解为a[i]访问越界。

相关标签: 教学