You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么我的C++数组求和函数总是返回0而非正确的求和结果?

问题原因
  • 你没有接收ArraySum函数的返回值。ArraySum内部定义的sum是函数内部的局部变量,和main函数里声明的sum是完全独立的两个变量,二者没有任何关联。你调用ArraySum(arr, n)后没有把函数返回的求和结果赋值给main里的sum变量,此时main里的sum属于未初始化的局部变量,输出0只是未定义行为的随机表现,不等于你的函数返回了0。
  • 你的代码中int arr[n]不属于标准C++语法,这是部分编译器提供的变长数组扩展,正式项目中不推荐使用,建议改用std::vector或者动态申请数组。
修正后代码
#include <iostream>
#include <vector>
using namespace std;

int ArraySum(vector<int>& arr, int size){
  int sum=0;
  for(int i=0 ; i<size; i++){
      cin >> arr[i];
      sum +=arr[i];
  }   
  return sum;
}
   
int main()
{
    int n;
    cin >>n;
    vector<int> arr(n);
    int sum = ArraySum(arr, n);
    cout << sum;
    return 0;
}

如果要保留原有数组写法,仅需要把main函数中的调用逻辑改为sum = ArraySum(arr, n);即可正常输出结果,仅需注意变长数组不符合C++通用标准,兼容性存在限制。

内容的提问来源于stack exchange,提问作者Fawwaz Anrico Purnomo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:36:04