#include <stdio.h>
#include <stdlib.h>
// 求数组元素和
/* Warning :this is buggy code*/
float sum_elemments(float a[],unsigned length){
int i ;
float result = 0;
for(i = 0;i <= length - 1;i++)
result += a[i];
return result;
}
int main()
{
float a[]={1,2,3,4,5,6,7,8,9};
printf("%f",sum_elemments(a,0));
return 0;
}
/* 这样的代码时错误的有bug存在,当我们把参数length传为0时length-1就为Max
* 因为-1是有符号而length无符号。这样的话i就永远小于等于UMax,这样就非法访问了数组a。
* 改进方法1、将length改为int
* 2、i <= length - 1改为i < length
*/