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

无法计算数组偶数元素和,遇operator<<匹配错误求解决

错误原因与修复方案

错误原因

你写的evenSum函数返回值类型是void,但你在cout语句里直接调用了这个函数——C++里std::ostream(也就是cout的底层类型)根本不知道怎么输出void类型,所以编译器报出了no match for ‘operator<<’的错误。简单说就是:你让cout输出一个“没有返回值”的操作结果,它做不到。

修复方法

只需要两步就能搞定:

  1. 把evenSum的返回值类型从void改成int(如果数组元素是其他数值类型,比如long,就对应修改),函数内部计算完偶数和后,用return返回这个结果。
  2. 调用函数时,直接把evenSum的返回值传给cout就行,因为现在它返回的是一个具体的数值,cout能正常输出。

错误代码示例(导致报错的写法)

// 错误的evenSum函数
void evenSum(int arr[], int size) {
    int sum = 0;
    for (int i = 0; i < size; i++) {
        if (arr[i] % 2 == 0) {
            sum += arr[i];
        }
    }
    // 没有返回语句
}

// 错误的调用方式
cout << evenSum(arr, 5); // 这里直接让cout输出void函数的调用结果,必然报错

修复后的代码

// 修复后的evenSum函数
int evenSum(int arr[], int size) {
    int sum = 0;
    for (int i = 0; i < size; i++) {
        if (arr[i] % 2 == 0) {
            sum += arr[i];
        }
    }
    return sum; // 返回计算好的偶数和
}

// 正确的调用方式
cout << "数组偶数元素的和是:" << evenSum(arr, 5) << endl;

内容的提问来源于stack exchange,提问作者Rama

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:43:12