第一章1 解释

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

补全代码如下:
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)
进入断点后状态如下图:
在这里插入图片描述
如同学们所说的一样,len-1的结果为一个非常大的正数,它是232-1。此时a[0]=1,sum=0。
继续运行(F5),
在这里插入图片描述
此时a[1]=2,sum=1。
继续运行(F5),
在这里插入图片描述
此时a[2]=3,sum=3。
继续运行(F5),
在这里插入图片描述
此时a[3]=1245064,a[3]未赋初值,当前值不正确,sum=6,sum的值的数组a的3个素之和(1,2,3)。
删除断点(F9),继续运行(F5),
在这里插入图片描述
for循环4145次停止,并报告出错,出错信息可理解为a[i]访问越界。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值