考虑下列代码,这段代码试图计算数组a中所有元素的和,其中元素的 数量由参数length给出。
/* WARNING: This is buggy code */ float snm_elements(float a[], unsigned length) { int i; float result =0; for (i= 0; i <= length-1; i++) result += a[i]; return result; }
当参数length等于0时,运行这段代码应该返回0. 0。但实际上,运行时会遇 到一个内存错误。请解释为什么会发生这样的情况,并且说明如何修改代码。