【C】求一维数组内元素的总和时出现奇怪的结果?

简单ok
  • 99

直接上代码:

#include <stdio.h>
int sum_num(int arr[],int length){
    int i,sum;
    for(i = 0;i < length;i++){
        sum += arr[i];
        printf("sum为%d\n",sum); 
    }
    return sum;
} 
int main(){
    int arr[]={80,70,66,35,95,78,58,67,87,90};
    int len=sizeof(arr)/sizeof(arr[0]);
    printf("总分是%d\n",sum_num(arr,len));
    return 0;
}

为什么输出的结果是这样的:

clipboard.png

请问为什么是输出这个结果?用的编辑器是dev-C++!

回复
阅读 2.5k
2 个回答
✓ 已被采纳

你初始化了?

#include <stdio.h>
int sum_num(int arr[],int length){
    int i,sum=0;
    for(i = 0;i < length;i++){
        sum += arr[i];
        printf("sum为%d\n",sum); 
    }
    return sum;
} 
int main(){
    int arr[]={80,70,66,35,95,78,58,67,87,90};
    int len=sizeof(arr)/sizeof(arr[0]);
    printf("总分是%d\n",sum_num(arr,len));
    return 0;
}

sum是栈上的未初始化变量,它的值是随机的,有可能是0也有可能不是0。初始化为0就行了

宣传栏