
#include<stdio.h>
float sum_elements(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[0];
  printf("array sum: %f\n", sum_elements(a, 0));
}

调整代码后:
/* Practice problem 2.25 on page 119
 * There's a subtle error in this code due to implicit casting and using unsigned data type.
 */
#include<stdio.h>
float sum_elements(float a[], unsigned length) {
  int i;
  float result = 0;
  // Issue is here due to usage of length-1 which leads to "underflow" to the unsigned int max number! 
  // for (i = 0; i <= length-1; i++) {
  // correct version (another alternative is to declare length as int)
  for (i = 0; i < length; i++) {
     result += a[i];
  }
  return result;
}
int main() {
  float a[0];
  printf("array sum: %f\n", sum_elements(a, 0));
}














![悟空crm安装搭建 报错[0] RedisException in Redis.php line 56问题处理办法](https://img-blog.csdnimg.cn/fd73ffc660304359b277b821f8cbaea6.png)




